Hi Ben,

Ben Widawsky <b...@bwidawsk.net> writes:

> The most important feedback I have on the patch is that we continue to add 
> stuff
> like this for compute when there is a libdrm interface which exposes all or 
> most
> of it - and that interface should either be expanded or removed. FWIW, I 
> wasn't
> a big fan of the interface when it was introduced, but it seems without 
> reading
> reading and decoding the fuse registers, we can't actually figure some of this
> stuff out on CHV.
>
CHV can only have one slice.

> Is there a reason we cannot use the libdrm interface to get this info?
>
I'm not aware of any libdrm interface that would give you the slice
count.

> On Wed, Nov 25, 2015 at 04:22:28PM +0200, Francisco Jerez wrote:
>> ---
>>  src/mesa/drivers/dri/i965/brw_device_info.c | 20 ++++++++++++++++++++
>>  src/mesa/drivers/dri/i965/brw_device_info.h |  5 +++++
>>  2 files changed, 25 insertions(+)
>> 
>> diff --git a/src/mesa/drivers/dri/i965/brw_device_info.c 
>> b/src/mesa/drivers/dri/i965/brw_device_info.c
>> index 4550550..bf31898 100644
>> --- a/src/mesa/drivers/dri/i965/brw_device_info.c
>> +++ b/src/mesa/drivers/dri/i965/brw_device_info.c
>> @@ -28,6 +28,7 @@
>
> [snip]
>
> I don't know if "slice" means anything prior to IVB.

The SNB documentation already mentions it, but I'm not aware of any
device ever manufactured before HSW GT3 with more than one slice.

Regardless of whether the "slice" existed or not prior to that, because
the slice count is mainly just a multiplicative factor we should IMO set
the slice count to the multiplicative identity on all generations that
never had multiple slices, because that makes special-casing for them
unnecessary.

>
>> @@ -131,6 +137,7 @@ static const struct brw_device_info 
>> brw_device_info_ivb_gt1 = {
>>  static const struct brw_device_info brw_device_info_ivb_gt2 = {
>>     GEN7_FEATURES, .is_ivybridge = true, .gt = 2,
>>     .needs_unlit_centroid_workaround = true,
>> +   .num_slices = 1,
>>     .max_vs_threads = 128,
>>     .max_hs_threads = 128,
>>     .max_ds_threads = 128,
>> @@ -150,6 +157,7 @@ static const struct brw_device_info 
>> brw_device_info_ivb_gt2 = {
>>  static const struct brw_device_info brw_device_info_byt = {
>>     GEN7_FEATURES, .is_baytrail = true, .gt = 1,
>>     .needs_unlit_centroid_workaround = true,
>> +   .num_slices = 1,
>>     .has_llc = false,
>>     .max_vs_threads = 36,
>>     .max_hs_threads = 36,
>> @@ -175,6 +183,7 @@ static const struct brw_device_info brw_device_info_byt 
>> = {
>>  
>>  static const struct brw_device_info brw_device_info_hsw_gt1 = {
>>     HSW_FEATURES, .gt = 1,
>> +   .num_slices = 1,
>>     .max_vs_threads = 70,
>>     .max_hs_threads = 70,
>>     .max_ds_threads = 70,
>> @@ -193,6 +202,7 @@ static const struct brw_device_info 
>> brw_device_info_hsw_gt1 = {
>>  
>>  static const struct brw_device_info brw_device_info_hsw_gt2 = {
>>     HSW_FEATURES, .gt = 2,
>> +   .num_slices = 1,
>>     .max_vs_threads = 280,
>>     .max_hs_threads = 256,
>>     .max_ds_threads = 280,
>> @@ -211,6 +221,7 @@ static const struct brw_device_info 
>> brw_device_info_hsw_gt2 = {
>>  
>>  static const struct brw_device_info brw_device_info_hsw_gt3 = {
>>     HSW_FEATURES, .gt = 3,
>> +   .num_slices = 2,
>>     .max_vs_threads = 280,
>>     .max_hs_threads = 256,
>>     .max_ds_threads = 280,
>> @@ -243,6 +254,7 @@ static const struct brw_device_info 
>> brw_device_info_hsw_gt3 = {
>>  
>>  static const struct brw_device_info brw_device_info_bdw_gt1 = {
>>     GEN8_FEATURES, .gt = 1,
>> +   .num_slices = 1,
>>     .max_cs_threads = 42,
>>     .urb = {
>>        .size = 192,
>> @@ -256,6 +268,7 @@ static const struct brw_device_info 
>> brw_device_info_bdw_gt1 = {
>>  
>>  static const struct brw_device_info brw_device_info_bdw_gt2 = {
>>     GEN8_FEATURES, .gt = 2,
>> +   .num_slices = 1,
>>     .max_cs_threads = 56,
>>     .urb = {
>>        .size = 384,
>> @@ -269,6 +282,7 @@ static const struct brw_device_info 
>> brw_device_info_bdw_gt2 = {
>>  
>>  static const struct brw_device_info brw_device_info_bdw_gt3 = {
>>     GEN8_FEATURES, .gt = 3,
>> +   .num_slices = 2,
>>     .max_cs_threads = 56,
>>     .urb = {
>>        .size = 384,
>> @@ -283,6 +297,7 @@ static const struct brw_device_info 
>> brw_device_info_bdw_gt3 = {
>>  static const struct brw_device_info brw_device_info_chv = {
>>     GEN8_FEATURES, .is_cherryview = 1, .gt = 1,
>>     .has_llc = false,
>> +   .num_slices = 1,
>>     .max_vs_threads = 80,
>>     .max_hs_threads = 80,
>>     .max_ds_threads = 80,
>> @@ -324,19 +339,23 @@ static const struct brw_device_info 
>> brw_device_info_chv = {
>>  
>>  static const struct brw_device_info brw_device_info_skl_gt1 = {
>>     GEN9_FEATURES, .gt = 1,
>> +   .num_slices = 1,
>>     .urb.size = 192,
>>  };
>>  
>>  static const struct brw_device_info brw_device_info_skl_gt2 = {
>>     GEN9_FEATURES, .gt = 2,
>> +   .num_slices = 1,
>>  };
>>  
>>  static const struct brw_device_info brw_device_info_skl_gt3 = {
>>     GEN9_FEATURES, .gt = 3,
>> +   .num_slices = 2,
>>  };
>>  
>>  static const struct brw_device_info brw_device_info_skl_gt4 = {
>>     GEN9_FEATURES, .gt = 4,
>> +   .num_slices = 3,
>>     /* From the "L3 Allocation and Programming" documentation:
>>      *
>>      * "URB is limited to 1008KB due to programming restrictions.  This is 
>> not a
>> @@ -355,6 +374,7 @@ static const struct brw_device_info brw_device_info_bxt 
>> = {
>>     .has_llc = false,
>>  
>>     /* XXX: These are preliminary thread counts and URB sizes. */
>> +   .num_slices = 1,
>>     .max_vs_threads = 56,
>>     .max_hs_threads = 56,
>>     .max_ds_threads = 56,
>> diff --git a/src/mesa/drivers/dri/i965/brw_device_info.h 
>> b/src/mesa/drivers/dri/i965/brw_device_info.h
>> index 4911c23..8d3af62 100644
>> --- a/src/mesa/drivers/dri/i965/brw_device_info.h
>> +++ b/src/mesa/drivers/dri/i965/brw_device_info.h
>> @@ -68,6 +68,11 @@ struct brw_device_info
>>      * GPU Limits:
>>      *  @{
>>      */
>> +   /**
>> +    * Total number of slices present on the device whether or not they've 
>> been
>> +    * fused off.
>> +    */
>> +   unsigned num_slices;
>>     unsigned max_vs_threads;
>>     unsigned max_hs_threads;
>>     unsigned max_ds_threads;

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to