Lines Matching refs:binary

180 static bool read_private_lds_symbols(struct ac_rtld_binary *binary, unsigned part_idx,
198 struct ac_rtld_part *part = &binary->parts[part_idx];
231 const struct ac_rtld_symbol *shared = find_symbol(&binary->lds_symbols, s.name, part_idx);
238 util_dynarray_append(&binary->lds_symbols, struct ac_rtld_symbol, s);
248 * Open a binary consisting of one or more shader parts.
250 * \param binary the uninitialized struct
251 * \param i binary opening parameters
253 bool ac_rtld_open(struct ac_rtld_binary *binary, struct ac_rtld_open_info i)
261 memset(binary, 0, sizeof(*binary));
262 memcpy(&binary->options, &i.options, sizeof(binary->options));
263 binary->wave_size = i.wave_size;
264 binary->num_parts = i.num_parts;
265 binary->parts = calloc(sizeof(*binary->parts), i.num_parts);
266 if (!binary->parts)
291 if (!util_dynarray_resize(&binary->lds_symbols, struct ac_rtld_symbol,
295 memcpy(binary->lds_symbols.data, i.shared_lds_symbols, binary->lds_symbols.size);
298 util_dynarray_foreach (&binary->lds_symbols, struct ac_rtld_symbol, symbol)
308 if (!layout_symbols(binary->lds_symbols.data, i.num_shared_lds_symbols, &shared_lds_size))
316 binary->lds_size = shared_lds_size;
322 if (binary->options.halt_at_entry)
326 struct ac_rtld_part *part = &binary->parts[part_idx];
328 util_dynarray_num_elements(&binary->lds_symbols, struct ac_rtld_symbol);
384 if (!read_private_lds_symbols(binary, part_idx, section, &lds_end_align))
390 if (!layout_symbols(util_dynarray_element(&binary->lds_symbols, struct ac_rtld_symbol,
392 util_dynarray_num_elements(&binary->lds_symbols, struct ac_rtld_symbol) -
396 binary->lds_size = MAX2(binary->lds_size, part_lds_size);
399 binary->rx_end_markers = pasted_text_size;
407 binary->lds_size = align(binary->lds_size, lds_end_align);
410 util_dynarray_grow(&binary->lds_symbols, struct ac_rtld_symbol, 1);
414 lds_end->offset = binary->lds_size;
418 if (binary->lds_size > max_lds_size) {
420 (unsigned)binary->lds_size, max_lds_size);
425 binary->rx_size = pasted_text_size;
426 binary->rx_size = align(binary->rx_size, rx_align);
429 struct ac_rtld_part *part = &binary->parts[part_idx];
436 s->offset += binary->rx_size;
440 binary->rx_size += rx_size;
441 binary->exec_size = exec_size;
466 binary->rx_size = align(binary->rx_size + prefetch_distance * 64, 64);
474 ac_rtld_close(binary);
478 void ac_rtld_close(struct ac_rtld_binary *binary)
480 for (unsigned i = 0; i < binary->num_parts; ++i) {
481 struct ac_rtld_part *part = &binary->parts[i];
486 util_dynarray_fini(&binary->lds_symbols);
487 free(binary->parts);
488 binary->parts = NULL;
489 binary->num_parts = 0;
513 bool ac_rtld_get_section_by_name(struct ac_rtld_binary *binary, const char *name, const char **data,
516 assert(binary->num_parts == 1);
517 return get_section_by_name(&binary->parts[0], name, data, nbytes);
520 bool ac_rtld_read_config(const struct radeon_info *info, struct ac_rtld_binary *binary,
523 for (unsigned i = 0; i < binary->num_parts; ++i) {
524 struct ac_rtld_part *part = &binary->parts[i];
533 ac_parse_shader_binary_config(config_data, config_nbytes, binary->wave_size, true, info, &c);
570 const struct ac_rtld_symbol *lds_sym = find_symbol(&u->binary->lds_symbols, name, part_idx);
586 struct ac_rtld_part *part = &u->binary->parts[part_idx];
622 struct ac_rtld_part *part = &u->binary->parts[part_idx];
737 * Upload the binary or binaries to the provided GPU buffers, including
758 if (u->binary->options.halt_at_entry) {
764 for (unsigned i = 0; i < u->binary->num_parts; ++i) {
765 struct ac_rtld_part *part = &u->binary->parts[i];
785 if (u->binary->rx_end_markers) {
786 uint32_t *dst = (uint32_t *)(u->rx_ptr + u->binary->rx_end_markers);
794 for (unsigned i = 0; i < u->binary->num_parts; ++i) {
795 struct ac_rtld_part *part = &u->binary->parts[i];