Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>
On 2015-11-14 13:43:39, Jordan Justen wrote: > From: Francisco Jerez <curroje...@riseup.net> > > This will make sure that we recalculate the URB layout anytime the URB > size is modified by the L3 partitioning code. > --- > src/mesa/drivers/dri/i965/brw_context.h | 2 ++ > src/mesa/drivers/dri/i965/brw_state_upload.c | 1 + > src/mesa/drivers/dri/i965/gen7_urb.c | 3 +++ > 3 files changed, 6 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_context.h > b/src/mesa/drivers/dri/i965/brw_context.h > index 20d2dd0..ac05658 100644 > --- a/src/mesa/drivers/dri/i965/brw_context.h > +++ b/src/mesa/drivers/dri/i965/brw_context.h > @@ -213,6 +213,7 @@ enum brw_state_id { > BRW_STATE_VS_ATTRIB_WORKAROUNDS, > BRW_STATE_COMPUTE_PROGRAM, > BRW_STATE_CS_WORK_GROUPS, > + BRW_STATE_URB_SIZE, > BRW_NUM_STATE_BITS > }; > > @@ -293,6 +294,7 @@ enum brw_state_id { > #define BRW_NEW_VS_ATTRIB_WORKAROUNDS (1ull << > BRW_STATE_VS_ATTRIB_WORKAROUNDS) > #define BRW_NEW_COMPUTE_PROGRAM (1ull << BRW_STATE_COMPUTE_PROGRAM) > #define BRW_NEW_CS_WORK_GROUPS (1ull << BRW_STATE_CS_WORK_GROUPS) > +#define BRW_NEW_URB_SIZE (1ull << BRW_STATE_URB_SIZE) > > struct brw_state_flags { > /** State update flags signalled by mesa internals */ > diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c > b/src/mesa/drivers/dri/i965/brw_state_upload.c > index 6f8daf6..aab5c91 100644 > --- a/src/mesa/drivers/dri/i965/brw_state_upload.c > +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c > @@ -618,6 +618,7 @@ static struct dirty_bit_map brw_bits[] = { > DEFINE_BIT(BRW_NEW_VS_ATTRIB_WORKAROUNDS), > DEFINE_BIT(BRW_NEW_COMPUTE_PROGRAM), > DEFINE_BIT(BRW_NEW_CS_WORK_GROUPS), > + DEFINE_BIT(BRW_NEW_URB_SIZE), > {0, 0, 0} > }; > > diff --git a/src/mesa/drivers/dri/i965/gen7_urb.c > b/src/mesa/drivers/dri/i965/gen7_urb.c > index 6916217..11a4f03 100644 > --- a/src/mesa/drivers/dri/i965/gen7_urb.c > +++ b/src/mesa/drivers/dri/i965/gen7_urb.c > @@ -153,6 +153,7 @@ gen7_upload_urb(struct brw_context *brw) > * skip the rest of the logic. > */ > if (!(brw->ctx.NewDriverState & BRW_NEW_CONTEXT) && > + !(brw->ctx.NewDriverState & BRW_NEW_URB_SIZE) && > brw->urb.vsize == vs_size && > brw->urb.gs_present == gs_present && > brw->urb.gsize == gs_size) { > @@ -176,6 +177,7 @@ gen7_upload_urb(struct brw_context *brw) > unsigned chunk_size_bytes = 8192; > > /* Determine the size of the URB in chunks. > + * BRW_NEW_URB_SIZE > */ > unsigned urb_chunks = brw->urb.size * 1024 / chunk_size_bytes; > > @@ -314,6 +316,7 @@ const struct brw_tracked_state gen7_urb = { > .dirty = { > .mesa = 0, > .brw = BRW_NEW_CONTEXT | > + BRW_NEW_URB_SIZE | > BRW_NEW_GEOMETRY_PROGRAM | > BRW_NEW_GS_PROG_DATA | > BRW_NEW_VS_PROG_DATA, > -- > 2.6.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev