radeon: Add a helper function for freeing members of radeon_shader_binary

This commit is contained in:
Tom Stellard 2015-01-14 10:01:29 -05:00
parent c4fd0c9052
commit 5667aa58c4
4 changed files with 13 additions and 6 deletions

View File

@ -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);
}

View File

@ -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 */

View File

@ -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);
}

View File

@ -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;
}