diff options
author | Kenneth Graunke <[email protected]> | 2018-10-19 01:31:56 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2019-02-21 10:26:09 -0800 |
commit | b3a40c27a24ccf10d1b91d8294b6e9f01f5fd2b9 (patch) | |
tree | f923174bea4da94f2f36df98c76d429afd13d998 /src/gallium | |
parent | f8796079dab4a3d6fb9ea034b93fd38de53fbe1f (diff) |
iris: don't let render/compute contexts stomp each other's dirty bits
only clear what you process
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/iris/iris_context.h | 8 | ||||
-rw-r--r-- | src/gallium/drivers/iris/iris_draw.c | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/gallium/drivers/iris/iris_context.h b/src/gallium/drivers/iris/iris_context.h index 096a3d2ff51..4060cdb5d2d 100644 --- a/src/gallium/drivers/iris/iris_context.h +++ b/src/gallium/drivers/iris/iris_context.h @@ -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 | \ diff --git a/src/gallium/drivers/iris/iris_draw.c b/src/gallium/drivers/iris/iris_draw.c index c2216a22bed..f9b8db7b64e 100644 --- a/src/gallium/drivers/iris/iris_draw.c +++ b/src/gallium/drivers/iris/iris_draw.c @@ -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 } |