iris: BIG OL' HACK for UBO updates

We need to re-push data when UBO changes.  This will need to be replaced
with a usage history based flushing system later.
This commit is contained in:
Kenneth Graunke
2018-07-25 15:09:50 -07:00
parent a7311ef068
commit f3dd70182d
+11
View File
@@ -588,10 +588,21 @@ iris_transfer_unmap(struct pipe_context *ctx, struct pipe_transfer *xfer)
{
struct iris_context *ice = (struct iris_context *)ctx;
struct iris_transfer *map = (void *) xfer;
struct iris_resource *res = (struct iris_resource *) xfer->resource;
struct isl_surf *surf = &res->surf;
if (map->unmap)
map->unmap(map);
/* XXX: big ol' hack! need to re-emit UBOs. want bind_history? */
if (surf->tiling == ISL_TILING_LINEAR) {
ice->state.dirty |= IRIS_DIRTY_CONSTANTS_VS | IRIS_DIRTY_BINDINGS_VS
| IRIS_DIRTY_CONSTANTS_TCS | IRIS_DIRTY_BINDINGS_TCS
| IRIS_DIRTY_CONSTANTS_TES | IRIS_DIRTY_BINDINGS_TES
| IRIS_DIRTY_CONSTANTS_GS | IRIS_DIRTY_BINDINGS_GS
| IRIS_DIRTY_CONSTANTS_FS | IRIS_DIRTY_BINDINGS_FS;
}
pipe_resource_reference(&xfer->resource, NULL);
slab_free(&ice->transfer_pool, map);
}