diff options
author | Jan Vesely <[email protected]> | 2018-05-03 19:26:29 -0400 |
---|---|---|
committer | Jan Vesely <[email protected]> | 2018-05-15 19:01:47 -0400 |
commit | f3521ce2c440bd50020a3ff81e6d9fa17c01009c (patch) | |
tree | c53673203fac84a2170eb30513a0d993f3b2cc8e /src/gallium/drivers/r600/evergreen_compute.c | |
parent | e01af38d6faf5dfd0f4ac6548ae03c27cca1dede (diff) |
eg/compute: Use reference counting to handle compute memory pool.
Use pipe_reference to release old RAT surfaces.
RAT surface adds a reference to pool bo, so use reference counting for pool->bo
as well.
v2: Use the same pattern for both defrag paths
Drop confusing comment
CC: <[email protected]>
Signed-off-by: Jan Vesely <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/evergreen_compute.c')
-rw-r--r-- | src/gallium/drivers/r600/evergreen_compute.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c index bd3d8934b3c..8c818700b6c 100644 --- a/src/gallium/drivers/r600/evergreen_compute.c +++ b/src/gallium/drivers/r600/evergreen_compute.c @@ -122,7 +122,8 @@ static void evergreen_set_rat(struct r600_pipe_compute *pipe, rat_templ.u.tex.first_layer = 0; rat_templ.u.tex.last_layer = 0; - /* Add the RAT the list of color buffers */ + /* Add the RAT the list of color buffers. Drop the old buffer first. */ + pipe_surface_reference(&pipe->ctx->framebuffer.state.cbufs[id], NULL); pipe->ctx->framebuffer.state.cbufs[id] = pipe->ctx->b.b.create_surface( (struct pipe_context *)pipe->ctx, (struct pipe_resource *)bo, &rat_templ); |