return NULL;
shader_part->ref_count = 1;
- shader_part->binary = binary;
shader_part->code_size = code_size;
shader_part->rsrc1 = S_00B848_VGPRS((binary->num_vgprs - 1) / (wave_size == 32 ? 8 : 4)) |
S_00B228_SGPRS((binary->num_sgprs - 1) / 8);
}
bool
-radv_shader_part_binary_upload(struct radv_device *device, struct radv_shader_part *shader_part)
+radv_shader_part_binary_upload(struct radv_device *device, const struct radv_shader_part_binary *bin,
+ struct radv_shader_part *shader_part)
{
- const struct radv_shader_part_binary *bin = shader_part->binary;
uint32_t code_size = radv_get_shader_binary_size(bin->code_size);
struct radv_shader_dma_submission *submission = NULL;
void *dest_ptr;
prolog->bo = prolog->alloc->arena->bo;
prolog->va = radv_buffer_get_va(prolog->bo) + prolog->alloc->offset;
- if (!radv_shader_part_binary_upload(device, prolog))
+ if (!radv_shader_part_binary_upload(device, binary, prolog))
goto fail_alloc;
if (options.dump_shader) {
fprintf(stderr, "\ndisasm:\n%s\n", prolog->disasm_string);
}
- free(prolog->binary);
- prolog->binary = NULL;
+ free(binary);
return prolog;
epilog->bo = epilog->alloc->arena->bo;
epilog->va = radv_buffer_get_va(epilog->bo) + epilog->alloc->offset;
- if (!radv_shader_part_binary_upload(device, epilog))
+ if (!radv_shader_part_binary_upload(device, binary, epilog))
goto fail_alloc;
if (options.dump_shader) {
fprintf(stderr, "\ndisasm:\n%s\n", epilog->disasm_string);
}
- free(epilog->binary);
- epilog->binary = NULL;
+ free(binary);
return epilog;
if (shader_part->alloc)
radv_free_shader_memory(device, shader_part->alloc);
- free(shader_part->binary);
free(shader_part->disasm_string);
free(shader_part);
}
uint32_t spi_shader_col_format;
uint64_t upload_seq;
- struct radv_shader_part_binary *binary;
-
/* debug only */
char *disasm_string;
};
VkResult radv_shader_wait_for_upload(struct radv_device *device, uint64_t seq);
bool radv_shader_part_binary_upload(struct radv_device *device,
+ const struct radv_shader_part_binary *bin,
struct radv_shader_part *shader_part);
struct radv_shader_dma_submission *