[Mesa-dev] [PATCH v2 14/20] i965/cs: Add max_cs_threads

Jordan Justen jordan.l.justen at intel.com
Sat Apr 25 17:39:20 PDT 2015


On 2015-04-25 13:54:41, Ben Widawsky wrote:
> On Fri, Apr 24, 2015 at 04:33:06PM -0700, Jordan Justen wrote:
> > Add some values for gen7 & gen8. These are the number threads in a
> > subslice.
> 
> I forget if I asked this in the v1, but shouldn't we be moving to the
> awful^wrequired kernel interface which exposes this information? I think for BSW
> it's actually required.
> 
> http://lists.freedesktop.org/archives/intel-gfx/2014-July/049917.html

I guess I915_PARAM_SUBSLICE_TOTAL and I915_PARAM_EU_TOTAL will be in
Linux 4.1, but I think mesa should come up with conservative defaults
for this info and refine it with the kernel calls when they are
available.

What do you think?

Regarding using the values, so threads per subslice would be
(I915_PARAM_EU_TOTAL / I915_PARAM_SUBSLICE_TOTAL) * threads_per_eu?
Since the kernel doesn't provide threads_per_eu, I guess we need to
have that in brw_device_info?

-Jordan

> Thread counts all look right afaict though.
> 
> > 
> > Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> > Cc: Ben Widawsky <ben at bwidawsk.net>
> > Cc: Kenneth Graunke <kenneth at whitecape.org>
> > ---
> >  src/mesa/drivers/dri/i965/brw_context.c     |  1 +
> >  src/mesa/drivers/dri/i965/brw_context.h     |  1 +
> >  src/mesa/drivers/dri/i965/brw_device_info.c | 12 +++++++++++-
> >  src/mesa/drivers/dri/i965/brw_device_info.h |  1 +
> >  4 files changed, 14 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> > index 25b50c7..7f8d430 100644
> > --- a/src/mesa/drivers/dri/i965/brw_context.c
> > +++ b/src/mesa/drivers/dri/i965/brw_context.c
> > @@ -835,6 +835,7 @@ brwCreateContext(gl_api api,
> >     brw->max_ds_threads = devinfo->max_ds_threads;
> >     brw->max_gs_threads = devinfo->max_gs_threads;
> >     brw->max_wm_threads = devinfo->max_wm_threads;
> > +   brw->max_cs_threads = devinfo->max_cs_threads;
> >     brw->urb.size = devinfo->urb.size;
> >     brw->urb.min_vs_entries = devinfo->urb.min_vs_entries;
> >     brw->urb.max_vs_entries = devinfo->urb.max_vs_entries;
> > diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
> > index 07847cc..56827d8 100644
> > --- a/src/mesa/drivers/dri/i965/brw_context.h
> > +++ b/src/mesa/drivers/dri/i965/brw_context.h
> > @@ -1228,6 +1228,7 @@ struct brw_context
> >     int max_ds_threads;
> >     int max_gs_threads;
> >     int max_wm_threads;
> > +   int max_cs_threads;
> >  
> >     /* BRW_NEW_URB_ALLOCATIONS:
> >      */
> > diff --git a/src/mesa/drivers/dri/i965/brw_device_info.c b/src/mesa/drivers/dri/i965/brw_device_info.c
> > index 928bf99..7999ba9 100644
> > --- a/src/mesa/drivers/dri/i965/brw_device_info.c
> > +++ b/src/mesa/drivers/dri/i965/brw_device_info.c
> > @@ -117,6 +117,7 @@ static const struct brw_device_info brw_device_info_ivb_gt1 = {
> >     .max_ds_threads = 36,
> >     .max_gs_threads = 36,
> >     .max_wm_threads = 48,
> > +   .max_cs_threads = 36,
> >     .urb = {
> >        .size = 128,
> >        .min_vs_entries = 32,
> > @@ -135,6 +136,7 @@ static const struct brw_device_info brw_device_info_ivb_gt2 = {
> >     .max_ds_threads = 128,
> >     .max_gs_threads = 128,
> >     .max_wm_threads = 172,
> > +   .max_cs_threads = 64, /* Maybe 96? */
> >     .urb = {
> >        .size = 256,
> >        .min_vs_entries = 32,
> > @@ -154,6 +156,7 @@ static const struct brw_device_info brw_device_info_byt = {
> >     .max_ds_threads = 36,
> >     .max_gs_threads = 36,
> >     .max_wm_threads = 48,
> > +   .max_cs_threads = 32,
> >     .urb = {
> >        .size = 128,
> >        .min_vs_entries = 32,
> > @@ -176,6 +179,7 @@ static const struct brw_device_info brw_device_info_hsw_gt1 = {
> >     .max_ds_threads = 70,
> >     .max_gs_threads = 70,
> >     .max_wm_threads = 102,
> > +   .max_cs_threads = 70,
> >     .urb = {
> >        .size = 128,
> >        .min_vs_entries = 32,
> > @@ -193,6 +197,7 @@ static const struct brw_device_info brw_device_info_hsw_gt2 = {
> >     .max_ds_threads = 280,
> >     .max_gs_threads = 256,
> >     .max_wm_threads = 204,
> > +   .max_cs_threads = 70,
> >     .urb = {
> >        .size = 256,
> >        .min_vs_entries = 64,
> > @@ -210,6 +215,7 @@ static const struct brw_device_info brw_device_info_hsw_gt3 = {
> >     .max_ds_threads = 280,
> >     .max_gs_threads = 256,
> >     .max_wm_threads = 408,
> > +   .max_cs_threads = 70,
> >     .urb = {
> >        .size = 512,
> >        .min_vs_entries = 64,
> > @@ -231,10 +237,11 @@ static const struct brw_device_info brw_device_info_hsw_gt3 = {
> >     .max_hs_threads = 504,                           \
> >     .max_ds_threads = 504,                           \
> >     .max_gs_threads = 504,                           \
> > -   .max_wm_threads = 384                            \
> > +   .max_wm_threads = 384
> >  
> >  static const struct brw_device_info brw_device_info_bdw_gt1 = {
> >     GEN8_FEATURES, .gt = 1,
> > +   .max_cs_threads = 42,
> >     .urb = {
> >        .size = 192,
> >        .min_vs_entries = 64,
> > @@ -247,6 +254,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,
> > +   .max_cs_threads = 56,
> >     .urb = {
> >        .size = 384,
> >        .min_vs_entries = 64,
> > @@ -259,6 +267,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,
> > +   .max_cs_threads = 56,
> >     .urb = {
> >        .size = 384,
> >        .min_vs_entries = 64,
> > @@ -280,6 +289,7 @@ static const struct brw_device_info brw_device_info_chv = {
> >     .max_ds_threads = 80,
> >     .max_gs_threads = 80,
> >     .max_wm_threads = 128,
> > +   .max_cs_threads = 28,
> >     .urb = {
> >        .size = 192,
> >        .min_vs_entries = 34,
> > diff --git a/src/mesa/drivers/dri/i965/brw_device_info.h b/src/mesa/drivers/dri/i965/brw_device_info.h
> > index b921c2b..65c024c 100644
> > --- a/src/mesa/drivers/dri/i965/brw_device_info.h
> > +++ b/src/mesa/drivers/dri/i965/brw_device_info.h
> > @@ -71,6 +71,7 @@ struct brw_device_info
> >     unsigned max_ds_threads;
> >     unsigned max_gs_threads;
> >     unsigned max_wm_threads;
> > +   unsigned max_cs_threads;
> >  
> >     struct {
> >        unsigned size;
> > -- 
> > 2.1.4
> > 


More information about the mesa-dev mailing list