diff options
author | Tom Stellard <[email protected]> | 2015-01-27 16:35:21 +0000 |
---|---|---|
committer | Tom Stellard <[email protected]> | 2015-01-28 21:03:46 +0000 |
commit | 5dcd97f25c217450c9e3e0441246187219a01eca (patch) | |
tree | f87149603f89629be89d684116af8681212216ef /src/gallium/drivers/radeonsi/si_shader.c | |
parent | 32206c5e560cea8c992ec983e7f5324493385ead (diff) |
radeonsi/compute: Allocate the scratch buffer during state creation
This moves scratch buffer allocation from si_launch_grid() to
si_create_compute_state(). This helps to reduce the overhead of
launching a kernel and also fixes a bug in the code that would cause
the scratch buffer to be too small if a kernel with smaller scratch size
was launched before a kernel with a larger scratch size.
Reviewed-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_shader.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 81cb2ef31bb..571ce67c7c3 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -2857,6 +2857,8 @@ void si_shader_destroy(struct pipe_context *ctx, struct si_shader *shader) if (shader->gs_copy_shader) si_shader_destroy(ctx, shader->gs_copy_shader); + if (shader->scratch_bo) + r600_resource_reference(&shader->scratch_bo, NULL); + r600_resource_reference(&shader->bo, NULL); - r600_resource_reference(&shader->scratch_bo, NULL); } |