From 82e38ac91f60e4ca242814ad36a5eecb82156cc6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michel=20D=C3=A4nzer?= Date: Thu, 27 Sep 2012 16:39:26 +0200 Subject: [PATCH] radeonsi: Fix double compilation of shader variants. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fixes crash in piglit glsl-max-varyings. Signed-off-by: Michel Dänzer Reviewed-by: Alex Deucher --- src/gallium/drivers/radeonsi/radeonsi_shader.c | 4 ++++ src/gallium/drivers/radeonsi/si_state_draw.c | 6 ------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c index a48234a17ca..f65e69210cf 100644 --- a/src/gallium/drivers/radeonsi/radeonsi_shader.c +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c @@ -698,6 +698,10 @@ int si_pipe_shader_create( dump = debug_get_bool_option("RADEON_DUMP_SHADERS", FALSE); + assert(shader->shader.noutput == 0); + assert(shader->shader.ninterp == 0); + assert(shader->shader.ninput == 0); + memset(&si_shader_ctx, 0, sizeof(si_shader_ctx)); radeon_llvm_context_init(&si_shader_ctx.radeon_bld); bld_base = &si_shader_ctx.radeon_bld.soa.bld_base; diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c index e62ef71e854..629ec03e2fb 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.c +++ b/src/gallium/drivers/radeonsi/si_state_draw.c @@ -45,9 +45,6 @@ static void si_pipe_shader_vs(struct pipe_context *ctx, struct si_pipe_shader *s unsigned nparams, i; uint64_t va; - if (si_pipe_shader_create(ctx, shader)) - return; - si_pm4_delete_state(rctx, vs, shader->pm4); pm4 = shader->pm4 = CALLOC_STRUCT(si_pm4_state); @@ -106,9 +103,6 @@ static void si_pipe_shader_ps(struct pipe_context *ctx, struct si_pipe_shader *s unsigned spi_baryc_cntl, spi_ps_input_ena; uint64_t va; - if (si_pipe_shader_create(ctx, shader)) - return; - si_pm4_delete_state(rctx, ps, shader->pm4); pm4 = shader->pm4 = CALLOC_STRUCT(si_pm4_state); -- 2.30.2