From: Tom Stellard Date: Thu, 3 Oct 2013 21:39:59 +0000 (-0400) Subject: radeonsi/compute: Fix segfault caused by recent refactoring X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b280516e114776c8d34c2d6fe0174762f3c85c0e;p=mesa.git radeonsi/compute: Fix segfault caused by recent refactoring Reviewed-by: Marek Olšák --- diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index dd4856f3b4e..f83c7e42a9e 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -247,6 +247,10 @@ static unsigned tgsi_get_processor_type(const struct tgsi_token *tokens) bool r600_can_dump_shader(struct r600_common_screen *rscreen, const struct tgsi_token *tokens) { + /* Compute shader don't have tgsi_tokens */ + if (!tokens) + return (rscreen->debug_flags & DBG_CS) != 0; + switch (tgsi_get_processor_type(tokens)) { case TGSI_PROCESSOR_VERTEX: return (rscreen->debug_flags & DBG_VS) != 0; diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c index 7ed3d2634c9..97ed4e38125 100644 --- a/src/gallium/drivers/radeonsi/radeonsi_shader.c +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c @@ -1759,8 +1759,8 @@ int si_compile_llvm(struct r600_context *rctx, struct si_pipe_shader *shader, unsigned i; uint32_t *ptr; struct radeon_llvm_binary binary; - bool dump = r600_can_dump_shader(&rctx->screen->b, shader->selector->tokens); - + bool dump = r600_can_dump_shader(&rctx->screen->b, + shader->selector ? shader->selector->tokens : NULL); memset(&binary, 0, sizeof(binary)); radeon_llvm_compile(mod, &binary, r600_get_llvm_processor_name(rctx->screen->b.family), dump);