[Mesa-dev] [PATCH 03/36] i965: Define state flag to signal that the URB size has been altered.

Jordan Justen jordan.l.justen at intel.com
Mon Nov 16 01:20:10 PST 2015


Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

On 2015-11-14 13:43:39, Jordan Justen wrote:
> From: Francisco Jerez <currojerez at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list