summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2015-12-27 23:47:00 +0100
committerMarek Olšák <marek.olsak@amd.com>2016-01-07 18:26:06 +0100
commit54ed83669e637ebfe269fc88d2e3924401b2a827 (patch)
treefece9567d9f75f96d64468ae09e007b908e4cf32
parentf20a76a4fd7eb176f2f3c09b7596a05be1961b75 (diff)
downloadexternal_mesa3d-54ed83669e637ebfe269fc88d2e3924401b2a827.zip
external_mesa3d-54ed83669e637ebfe269fc88d2e3924401b2a827.tar.gz
external_mesa3d-54ed83669e637ebfe269fc88d2e3924401b2a827.tar.bz2
radeonsi: move si_shader_binary_upload out of si_compile_llvm
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
-rw-r--r--src/gallium/drivers/radeonsi/si_compute.c1
-rw-r--r--src/gallium/drivers/radeonsi/si_shader.c12
2 files changed, 9 insertions, 4 deletions
diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c
index a543c55..aedea8e 100644
--- a/src/gallium/drivers/radeonsi/si_compute.c
+++ b/src/gallium/drivers/radeonsi/si_compute.c
@@ -124,6 +124,7 @@ static void *si_create_compute_state(
code, header->num_bytes);
si_compile_llvm(sctx->screen, &program->kernels[i], sctx->tm,
mod, &sctx->b.debug, TGSI_PROCESSOR_COMPUTE);
+ si_shader_binary_upload(sctx->screen, &program->kernels[i]);
LLVMDisposeModule(mod);
}
}
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index bcc9f65..2a206dd 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -3902,10 +3902,6 @@ int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader,
si_shader_binary_read(sscreen, &shader->binary, &shader->config,
debug, processor);
- r = si_shader_binary_upload(sscreen, shader);
- if (r)
- return r;
-
FREE(shader->binary.config);
FREE(shader->binary.global_symbol_offsets);
shader->binary.config = NULL;
@@ -3986,6 +3982,8 @@ static int si_generate_gs_copy_shader(struct si_screen *sscreen,
r = si_compile_llvm(sscreen, si_shader_ctx->shader,
si_shader_ctx->tm, bld_base->base.gallivm->module,
debug, TGSI_PROCESSOR_GEOMETRY);
+ if (!r)
+ r = si_shader_binary_upload(sscreen, si_shader_ctx->shader);
radeon_llvm_dispose(&si_shader_ctx->radeon_bld);
@@ -4186,6 +4184,12 @@ int si_shader_create(struct si_screen *sscreen, LLVMTargetMachineRef tm,
goto out;
}
+ r = si_shader_binary_upload(sscreen, shader);
+ if (r) {
+ fprintf(stderr, "LLVM failed to upload shader\n");
+ goto out;
+ }
+
radeon_llvm_dispose(&si_shader_ctx.radeon_bld);
if (si_shader_ctx.type == TGSI_PROCESSOR_GEOMETRY) {