diff options
author | Tom Stellard <thomas.stellard@amd.com> | 2015-01-14 10:01:29 -0500 |
---|---|---|
committer | Tom Stellard <thomas.stellard@amd.com> | 2015-01-20 09:55:43 -0500 |
commit | 5667aa58c49221a919526db08aab7da5bd2b3a5d (patch) | |
tree | 52522eb92a2eca84b2e12a9023ddae75c7d3a847 | |
parent | c4fd0c9052dd391d6f2e9bb8e6da209dfc7ef35b (diff) |
radeon: Add a helper function for freeing members of radeon_shader_binary
-rw-r--r-- | src/gallium/drivers/radeon/radeon_elf_util.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/radeon_elf_util.h | 5 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_compute.c | 4 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.c | 4 |
4 files changed, 13 insertions, 6 deletions
diff --git a/src/gallium/drivers/radeon/radeon_elf_util.c b/src/gallium/drivers/radeon/radeon_elf_util.c index ec39a89095..8cda57afff 100644 --- a/src/gallium/drivers/radeon/radeon_elf_util.c +++ b/src/gallium/drivers/radeon/radeon_elf_util.c @@ -161,3 +161,9 @@ const unsigned char *radeon_shader_binary_config_start( } return binary->config; } + +void radeon_shader_binary_free_members(struct radeon_shader_binary *binary) { + FREE(binary->code); + FREE(binary->config); + FREE(binary->rodata); +} diff --git a/src/gallium/drivers/radeon/radeon_elf_util.h b/src/gallium/drivers/radeon/radeon_elf_util.h index 8095e2f19e..ccac563831 100644 --- a/src/gallium/drivers/radeon/radeon_elf_util.h +++ b/src/gallium/drivers/radeon/radeon_elf_util.h @@ -46,4 +46,9 @@ const unsigned char *radeon_shader_binary_config_start( const struct radeon_shader_binary *binary, uint64_t symbol_offset); +/** + * Free all memory allocated for members of \p binary. This function does + * not free \p binary. + */ +void radeon_shader_binary_free_members(struct radeon_shader_binary *binary); #endif /* RADEON_ELF_UTIL_H */ diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c index 4b335bbf2f..f911e1f762 100644 --- a/src/gallium/drivers/radeonsi/si_compute.c +++ b/src/gallium/drivers/radeonsi/si_compute.c @@ -439,9 +439,7 @@ static void si_delete_compute_state(struct pipe_context *ctx, void* state){ pipe_resource_reference( (struct pipe_resource **)&program->input_buffer, NULL); - FREE(program->binary.code); - FREE(program->binary.config); - FREE(program->binary.rodata); + radeon_shader_binary_free_members(&program->binary); FREE(program); } diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index cf28860a35..a891bc651d 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -2621,9 +2621,7 @@ int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader, return r; } r = si_shader_binary_read(sscreen, shader, &binary); - FREE(binary.code); - FREE(binary.config); - FREE(binary.rodata); + radeon_shader_binary_free_members(&binary); return r; } |