[Mesa-dev] [PATCH 38/40] i965/blorp: Use more fine grained state trashing than new context
Topi Pohjolainen
topi.pohjolainen at intel.com
Sat Apr 16 13:43:06 UTC 2016
which results into, for example, urb configuration to be re-emitted
even though it is not needed. There are a few emitters that rely
solely on BRW_NEW_CONTEXT in driver state. These can be addressed
using GL-state instead (similarly to gen8_hiz_exec()):
gen6_sf_state: _NEW_PROGRAM
gen7_sf_state: _NEW_PROGRAM
gen8_sf_state: _NEW_PROGRAM
gen6_depth_stencil_state: _NEW_DEPTH
gen8_wm_depth_stencil: _NEW_DEPTH
brw_depthbuffer: _NEW_BUFFERS
Emitters tracked by compute pipeline monitor atoms other than
BRW_NEW_CONTEXT and therefore do not need special treatment.
Otherwise clearing with blorp will regress performance in some
synthetic test cases on BDW.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
---
src/mesa/drivers/dri/i965/brw_blorp.cpp | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp b/src/mesa/drivers/dri/i965/brw_blorp.cpp
index 04a2a74..5ffc5b4 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp
@@ -286,11 +286,14 @@ retry:
const uint64_t do_not_smash_bits = BRW_NEW_URB_SIZE |
BRW_NEW_STATE_BASE_ADDRESS |
- BRW_NEW_BATCH;
+ BRW_NEW_BATCH |
+ BRW_NEW_CONTEXT;
- /* We've smashed all state compared to what the normal 3D pipeline
+ /* We've smashed state compared to what the normal 3D pipeline
* rendering tracks for GL.
*/
+ brw->state.pipelines[BRW_RENDER_PIPELINE].mesa |=
+ (_NEW_DEPTH | _NEW_BUFFERS | _NEW_PROGRAM);
brw->ctx.NewDriverState |= ~do_not_smash_bits;
brw->no_depth_or_stencil = false;
brw->ib.type = -1;
--
2.5.5
More information about the mesa-dev
mailing list