iris: don't let render/compute contexts stomp each other's dirty bits

only clear what you process
This commit is contained in:
Kenneth Graunke 2018-10-19 01:31:56 -07:00
parent f8796079da
commit b3a40c27a2
2 changed files with 10 additions and 3 deletions

View file

@ -111,6 +111,14 @@ struct blorp_params;
#define IRIS_DIRTY_VF (1ull << 53)
#define IRIS_DIRTY_VF_TOPOLOGY (1ull << 54)
#define IRIS_ALL_DIRTY_FOR_COMPUTE (IRIS_DIRTY_CS | \
IRIS_DIRTY_SAMPLER_STATES_CS | \
IRIS_DIRTY_UNCOMPILED_CS | \
IRIS_DIRTY_CONSTANTS_CS | \
IRIS_DIRTY_BINDINGS_CS)
#define IRIS_ALL_DIRTY_FOR_RENDER ~IRIS_ALL_DIRTY_FOR_COMPUTE
#define IRIS_ALL_DIRTY_BINDINGS (IRIS_DIRTY_BINDINGS_VS | \
IRIS_DIRTY_BINDINGS_TCS | \
IRIS_DIRTY_BINDINGS_TES | \

View file

@ -89,7 +89,7 @@ iris_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
ice->vtbl.update_surface_base_address(batch, &ice->state.binder);
ice->vtbl.upload_render_state(ice, batch, info);
ice->state.dirty = 0ull;
ice->state.dirty &= ~IRIS_ALL_DIRTY_FOR_RENDER;
iris_postdraw_update_resolve_tracking(ice, batch);
}
@ -163,8 +163,7 @@ iris_launch_grid(struct pipe_context *ctx, const struct pipe_grid_info *grid)
ice->vtbl.update_surface_base_address(batch, &ice->state.binder);
ice->vtbl.upload_compute_state(ice, batch, grid);
// XXX: this is wrong. we need separate dirty tracking for compute/render
ice->state.dirty = 0ull;
ice->state.dirty &= ~IRIS_ALL_DIRTY_FOR_COMPUTE;
// XXX: postdraw resolve tracking
}