iris: don't emit SBE all the time

This commit is contained in:
Kenneth Graunke 2018-08-18 01:24:38 -07:00
parent 630d602900
commit 7705f62cb6
2 changed files with 3 additions and 6 deletions

View file

@ -112,7 +112,7 @@ dirty_flag_for_cache(enum iris_program_cache_id cache_id)
// XXX: new and old programs to decide what bits to twiddle
// XXX: CLIP: toggle if barycentric modes has any NONPERSPECTIVE or not
if (cache_id == IRIS_CACHE_FS)
return IRIS_DIRTY_WM | IRIS_DIRTY_FS | IRIS_DIRTY_CLIP;
return IRIS_DIRTY_WM | IRIS_DIRTY_FS | IRIS_DIRTY_CLIP | IRIS_DIRTY_SBE;
if (cache_id == IRIS_CACHE_VS)
return IRIS_DIRTY_VS | IRIS_DIRTY_VF_SGVS;

View file

@ -976,7 +976,7 @@ iris_bind_rasterizer_state(struct pipe_context *ctx, void *state)
cso_changed(clip_halfz))
ice->state.dirty |= IRIS_DIRTY_CC_VIEWPORT;
if (cso_changed(sprite_coord_enable))
if (cso_changed(sprite_coord_enable) || cso_changed(light_twoside))
ice->state.dirty |= IRIS_DIRTY_SBE;
}
@ -3536,10 +3536,7 @@ iris_upload_render_state(struct iris_context *ice,
iris_emit_merge(batch, cso->wm, dynamic_wm, ARRAY_SIZE(cso->wm));
}
if (1) {
// XXX: 3DSTATE_SBE, 3DSTATE_SBE_SWIZ
// -> iris_raster_state (point sprite texture coordinate origin)
// -> bunch of shader state...
if (dirty & IRIS_DIRTY_SBE) {
iris_emit_sbe(batch, ice);
}