diff options
author | Topi Pohjolainen <topi.pohjolainen@intel.com> | 2016-04-22 11:25:18 +0300 |
---|---|---|
committer | Topi Pohjolainen <topi.pohjolainen@intel.com> | 2016-04-23 07:09:39 +0300 |
commit | 65a5af6dd0550e93a5250582147689a1ddef9ffa (patch) | |
tree | 5732f1c9f80450ac4a9f111df14821e0779dbe87 /src/mesa/drivers/dri | |
parent | 0e850452d1af72ae2af3a77892483bd1564af481 (diff) | |
download | external_mesa3d-65a5af6dd0550e93a5250582147689a1ddef9ffa.zip external_mesa3d-65a5af6dd0550e93a5250582147689a1ddef9ffa.tar.gz external_mesa3d-65a5af6dd0550e93a5250582147689a1ddef9ffa.tar.bz2 |
i965: Introduce state flag for blorp
In the past, BLORP has clobbered all BRW_NEW_* state flags, to trigger
re-emission of the entire 3D pipeline on the next draw. However, there
are some packets BLORP simply leaves alone, so there's no need to
re-emit them. Trying to reduce the set of dirty bits flagged after
BLORP runs is tricky.
Instead, we introduce a BRW_NEW_BLORP flag. This should be set on any
atom which emits a packet that BLORP also emits. When BLORP runs, it
will flag BRW_NEW_BLORP, causing those packets to get re-emitted.
This also makes it easy to avoid re-emitting specific atoms - we can
simply drop the BRW_NEW_BLORP flag on those.
To start, we assume that all packets need to be re-emitted. This is the
safest approach and closest to the existing code's behavior. Many of
these are obviously not required, and can be dropped in subsequent
patches.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.h | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_state_upload.c | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 39c3d91..e449982 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -222,6 +222,7 @@ enum brw_state_id { BRW_STATE_CS_WORK_GROUPS, BRW_STATE_URB_SIZE, BRW_STATE_CC_STATE, + BRW_STATE_BLORP, BRW_NUM_STATE_BITS }; @@ -311,6 +312,7 @@ enum brw_state_id { #define BRW_NEW_CS_WORK_GROUPS (1ull << BRW_STATE_CS_WORK_GROUPS) #define BRW_NEW_URB_SIZE (1ull << BRW_STATE_URB_SIZE) #define BRW_NEW_CC_STATE (1ull << BRW_STATE_CC_STATE) +#define BRW_NEW_BLORP (1ull << BRW_STATE_BLORP) 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 a91d074..56bb95c 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -667,6 +667,7 @@ static struct dirty_bit_map brw_bits[] = { DEFINE_BIT(BRW_NEW_CS_WORK_GROUPS), DEFINE_BIT(BRW_NEW_URB_SIZE), DEFINE_BIT(BRW_NEW_CC_STATE), + DEFINE_BIT(BRW_NEW_BLORP), {0, 0, 0} }; |