radeonsi: always keep shader code, rodata, and relocs in memory
We won't compile shaders in draw calls, but we will concatenate shader binaries according to states in draw calls, so keep the binaries. Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
63345cfc3a
commit
f20a76a4fd
|
@ -3907,14 +3907,9 @@ int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader,
|
|||
return r;
|
||||
|
||||
FREE(shader->binary.config);
|
||||
FREE(shader->binary.rodata);
|
||||
FREE(shader->binary.global_symbol_offsets);
|
||||
if (shader->config.scratch_bytes_per_wave == 0) {
|
||||
FREE(shader->binary.code);
|
||||
FREE(shader->binary.relocs);
|
||||
memset(&shader->binary, 0,
|
||||
offsetof(struct radeon_shader_binary, disasm_string));
|
||||
}
|
||||
shader->binary.config = NULL;
|
||||
shader->binary.global_symbol_offsets = NULL;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -4227,6 +4222,7 @@ void si_shader_destroy(struct si_shader *shader)
|
|||
r600_resource_reference(&shader->bo, NULL);
|
||||
|
||||
FREE(shader->binary.code);
|
||||
FREE(shader->binary.rodata);
|
||||
FREE(shader->binary.relocs);
|
||||
FREE(shader->binary.disasm_string);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue