mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 04:10:09 +01:00
radeonsi: add exec_size to shader binary
Used by aco binary to split exec code and const data when combine multi part shader binary. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Qiang Yu <yuq825@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24443>
This commit is contained in:
parent
51a8479a51
commit
85c0f31099
3 changed files with 5 additions and 1 deletions
|
|
@ -842,6 +842,7 @@ struct si_shader_binary {
|
|||
/* Depends on binary type, either ELF or raw buffer. */
|
||||
const char *code_buffer;
|
||||
size_t code_size;
|
||||
uint32_t exec_size;
|
||||
|
||||
char *uploaded_code;
|
||||
size_t uploaded_code_size;
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ si_aco_build_shader_binary(void **data, const struct ac_shader_config *config,
|
|||
shader->binary.type = SI_SHADER_BINARY_RAW;
|
||||
shader->binary.code_buffer = buffer;
|
||||
shader->binary.code_size = code_size;
|
||||
shader->binary.exec_size = exec_size;
|
||||
|
||||
if (disasm_size) {
|
||||
memcpy(buffer + code_size, disasm_str, disasm_size);
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ static uint32_t *si_get_shader_binary(struct si_shader *shader)
|
|||
unsigned size = sizeof(struct si_shader_blob_head) +
|
||||
align(sizeof(shader->config), 4) +
|
||||
align(sizeof(shader->info), 4) +
|
||||
4 + align(shader->binary.code_size, 4) +
|
||||
4 + 4 + align(shader->binary.code_size, 4) +
|
||||
4 + shader->binary.num_symbols * 8 +
|
||||
4 + align(llvm_ir_size, 4);
|
||||
uint32_t *buffer = (uint32_t*)CALLOC(1, size);
|
||||
|
|
@ -269,6 +269,7 @@ static uint32_t *si_get_shader_binary(struct si_shader *shader)
|
|||
|
||||
ptr = write_data(ptr, &shader->config, sizeof(shader->config));
|
||||
ptr = write_data(ptr, &shader->info, sizeof(shader->info));
|
||||
ptr = write_data(ptr, &shader->binary.exec_size, 4);
|
||||
ptr = write_chunk(ptr, shader->binary.code_buffer, shader->binary.code_size);
|
||||
ptr = write_chunk(ptr, shader->binary.symbols, shader->binary.num_symbols * 8);
|
||||
ptr = write_chunk(ptr, shader->binary.llvm_ir_string, llvm_ir_size);
|
||||
|
|
@ -295,6 +296,7 @@ static bool si_load_shader_binary(struct si_shader *shader, void *binary)
|
|||
shader->binary.type = (enum si_shader_binary_type)head->type;
|
||||
ptr = read_data(ptr, &shader->config, sizeof(shader->config));
|
||||
ptr = read_data(ptr, &shader->info, sizeof(shader->info));
|
||||
ptr = read_data(ptr, &shader->binary.exec_size, 4);
|
||||
ptr = read_chunk(ptr, (void **)&shader->binary.code_buffer, &code_size);
|
||||
shader->binary.code_size = code_size;
|
||||
ptr = read_chunk(ptr, (void **)&shader->binary.symbols, &chunk_size);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue