radeonsi: move si_shader_binary_upload out of si_shader_binary_read
authorMarek Olšák <marek.olsak@amd.com>
Sun, 27 Dec 2015 22:22:14 +0000 (23:22 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Sun, 3 Jan 2016 21:41:16 +0000 (22:41 +0100)
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_compute.c
src/gallium/drivers/radeonsi/si_shader.c
src/gallium/drivers/radeonsi/si_shader.h

index 469e1cc..3d10e0e 100644 (file)
@@ -138,6 +138,7 @@ static void *si_create_compute_state(
        init_scratch_buffer(sctx, program);
        si_shader_binary_read(sctx->screen, &program->shader, &sctx->b.debug,
                              TGSI_PROCESSOR_COMPUTE);
+       si_shader_binary_upload(sctx->screen, &program->shader);
 
 #endif
        program->input_buffer = si_resource_create_custom(sctx->b.b.screen,
index 779550b..c7e38b4 100644 (file)
@@ -3887,16 +3887,12 @@ static void si_shader_dump_disassembly(const struct radeon_shader_binary *binary
        }
 }
 
-int si_shader_binary_read(struct si_screen *sscreen, struct si_shader *shader,
-                         struct pipe_debug_callback *debug, unsigned processor)
+void si_shader_binary_read(struct si_screen *sscreen, struct si_shader *shader,
+                          struct pipe_debug_callback *debug, unsigned processor)
 {
        const struct radeon_shader_binary *binary = &shader->binary;
-       int r;
 
        si_shader_binary_read_config(sscreen, shader, 0);
-       r = si_shader_binary_upload(sscreen, shader);
-       if (r)
-               return r;
 
        if (r600_can_dump_shader(&sscreen->b, processor)) {
                if (!(sscreen->b.debug_flags & DBG_NO_ASM))
@@ -3913,8 +3909,6 @@ int si_shader_binary_read(struct si_screen *sscreen, struct si_shader *shader,
                           "Shader Stats: SGPRS: %d VGPRS: %d Code Size: %d LDS: %d Scratch: %d",
                           shader->num_sgprs, shader->num_vgprs, binary->code_size,
                           shader->lds_size, shader->scratch_bytes_per_wave);
-
-       return 0;
 }
 
 int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader,
@@ -3939,7 +3933,11 @@ int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader,
                        return r;
        }
 
-       r = si_shader_binary_read(sscreen, shader, debug, processor);
+       si_shader_binary_read(sscreen, shader, debug, processor);
+
+       r = si_shader_binary_upload(sscreen, shader);
+       if (r)
+               return r;
 
        FREE(shader->binary.config);
        FREE(shader->binary.rodata);
index 236148c..882f698 100644 (file)
@@ -336,8 +336,8 @@ int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader,
 void si_shader_destroy(struct si_shader *shader);
 unsigned si_shader_io_get_unique_index(unsigned semantic_name, unsigned index);
 int si_shader_binary_upload(struct si_screen *sscreen, struct si_shader *shader);
-int si_shader_binary_read(struct si_screen *sscreen, struct si_shader *shader,
-                         struct pipe_debug_callback *debug, unsigned processor);
+void si_shader_binary_read(struct si_screen *sscreen, struct si_shader *shader,
+                          struct pipe_debug_callback *debug, unsigned processor);
 void si_shader_apply_scratch_relocs(struct si_context *sctx,
                        struct si_shader *shader,
                        uint64_t scratch_va);