From 63345cfc3a8a0f2d9bb16deef2a24cebe9045642 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 28 Dec 2015 01:45:00 +0100 Subject: [PATCH] radeonsi: don't pass si_shader to si_shader_binary_read MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Nicolai Hähnle --- src/gallium/drivers/radeonsi/si_compute.c | 3 ++- src/gallium/drivers/radeonsi/si_shader.c | 23 ++++++++++++----------- src/gallium/drivers/radeonsi/si_shader.h | 7 +++++-- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c index 7aedd39115a..a543c55221b 100644 --- a/src/gallium/drivers/radeonsi/si_compute.c +++ b/src/gallium/drivers/radeonsi/si_compute.c @@ -136,7 +136,8 @@ static void *si_create_compute_state( * the shader code to the GPU. */ init_scratch_buffer(sctx, program); - si_shader_binary_read(sctx->screen, &program->shader, &sctx->b.debug, + si_shader_binary_read(sctx->screen, &program->shader.binary, + &program->shader.config, &sctx->b.debug, TGSI_PROCESSOR_COMPUTE); si_shader_binary_upload(sctx->screen, &program->shader); diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index ac1d3e36866..9f6f3e1f4a6 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -3852,12 +3852,13 @@ static void si_shader_dump_disassembly(const struct radeon_shader_binary *binary } } -void 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 radeon_shader_binary *binary, + struct si_shader_config *conf, + struct pipe_debug_callback *debug, + unsigned processor) { - const struct radeon_shader_binary *binary = &shader->binary; - - si_shader_binary_read_config(&shader->binary, &shader->config, 0); + si_shader_binary_read_config(binary, conf, 0); if (r600_can_dump_shader(&sscreen->b, processor)) { if (!(sscreen->b.debug_flags & DBG_NO_ASM)) @@ -3866,15 +3867,14 @@ void si_shader_binary_read(struct si_screen *sscreen, struct si_shader *shader, fprintf(stderr, "*** SHADER STATS ***\n" "SGPRS: %d\nVGPRS: %d\nCode Size: %d bytes\nLDS: %d blocks\n" "Scratch: %d bytes per wave\n********************\n", - shader->config.num_sgprs, shader->config.num_vgprs, binary->code_size, - shader->config.lds_size, shader->config.scratch_bytes_per_wave); + conf->num_sgprs, conf->num_vgprs, binary->code_size, + conf->lds_size, conf->scratch_bytes_per_wave); } pipe_debug_message(debug, SHADER_INFO, "Shader Stats: SGPRS: %d VGPRS: %d Code Size: %d LDS: %d Scratch: %d", - shader->config.num_sgprs, shader->config.num_vgprs, - binary->code_size, shader->config.lds_size, - shader->config.scratch_bytes_per_wave); + conf->num_sgprs, conf->num_vgprs, binary->code_size, + conf->lds_size, conf->scratch_bytes_per_wave); } int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader, @@ -3899,7 +3899,8 @@ int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader, return r; } - si_shader_binary_read(sscreen, shader, debug, processor); + si_shader_binary_read(sscreen, &shader->binary, &shader->config, + debug, processor); r = si_shader_binary_upload(sscreen, shader); if (r) diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index 93d5af6ff5e..b0abacc1599 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -339,8 +339,11 @@ 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); -void 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 radeon_shader_binary *binary, + struct si_shader_config *conf, + 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); -- 2.30.2