iris: Skip double-disabling TCS/TES/GS after BLORP operations
BLORP always turns off TCS/TES/GS. If regular drawing also has them disabled (the overwhelmingly common case), then leaving them disabled is just fine by us and we can skip dirtying them, as that would just re-disable them a second time on the next draw. If they are actually enabled, however, we do need to flag them. Cuts 52% of the 3DSTATE_HS packets in an Aztec Ruins trace.
This commit is contained in:
parent
7f7060dc73
commit
706c9f2d60
|
@ -342,6 +342,23 @@ iris_blorp_exec(struct blorp_batch *blorp_batch,
|
|||
IRIS_DIRTY_SAMPLER_STATES_TES |
|
||||
IRIS_DIRTY_SAMPLER_STATES_GS);
|
||||
|
||||
if (!ice->shaders.uncompiled[MESA_SHADER_TESS_EVAL]) {
|
||||
/* BLORP disabled tessellation, that's fine for the next draw */
|
||||
skip_bits |= IRIS_DIRTY_TCS |
|
||||
IRIS_DIRTY_TES |
|
||||
IRIS_DIRTY_CONSTANTS_TCS |
|
||||
IRIS_DIRTY_CONSTANTS_TES |
|
||||
IRIS_DIRTY_BINDINGS_TCS |
|
||||
IRIS_DIRTY_BINDINGS_TES;
|
||||
}
|
||||
|
||||
if (!ice->shaders.uncompiled[MESA_SHADER_GEOMETRY]) {
|
||||
/* BLORP disabled geometry shaders, that's fine for the next draw */
|
||||
skip_bits |= IRIS_DIRTY_GS |
|
||||
IRIS_DIRTY_CONSTANTS_GS |
|
||||
IRIS_DIRTY_BINDINGS_GS;
|
||||
}
|
||||
|
||||
/* we can skip flagging IRIS_DIRTY_DEPTH_BUFFER, if
|
||||
* BLORP_BATCH_NO_EMIT_DEPTH_STENCIL is set.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue