From b280516e114776c8d34c2d6fe0174762f3c85c0e Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Thu, 3 Oct 2013 17:39:59 -0400 Subject: radeonsi/compute: Fix segfault caused by recent refactoring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák --- src/gallium/drivers/radeon/r600_pipe_common.c | 4 ++++ src/gallium/drivers/radeonsi/radeonsi_shader.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) 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); -- cgit v1.2.3