Mesa (master): r600g/compute: Fix segfault caused by new shader disassembler

Tom Stellard tstellar at kemper.freedesktop.org
Tue Feb 5 15:49:40 UTC 2013


Module: Mesa
Branch: master
Commit: 8aaee4d64e362137fabfe536a686638a6cc882bc
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8aaee4d64e362137fabfe536a686638a6cc882bc

Author: Tom Stellard <thomas.stellard at amd.com>
Date:   Mon Feb  4 19:31:54 2013 +0000

r600g/compute: Fix segfault caused by new shader disassembler

---

 src/gallium/drivers/r600/r600_isa.h    |    5 +++--
 src/gallium/drivers/r600/r600_shader.c |    1 +
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_isa.h b/src/gallium/drivers/r600/r600_isa.h
index 5028a95..c6f115f 100644
--- a/src/gallium/drivers/r600/r600_isa.h
+++ b/src/gallium/drivers/r600/r600_isa.h
@@ -650,7 +650,8 @@ static const struct cf_op_info cf_op_table[] = {
 		{"ALU_EXT",                       {   -1,   -1, 0x0C, 0x0C },  CF_CLAUSE | CF_ALU | CF_ALU_EXT  },
 		{"ALU_CONTINUE",                  { 0x0D, 0x0D, 0x0D,   -1 },  CF_CLAUSE | CF_ALU  },
 		{"ALU_BREAK",                     { 0x0E, 0x0E, 0x0E,   -1 },  CF_CLAUSE | CF_ALU  },
-		{"ALU_ELSE_AFTER",                { 0x0F, 0x0F, 0x0F, 0x0F },  CF_CLAUSE | CF_ALU  }
+		{"ALU_ELSE_AFTER",                { 0x0F, 0x0F, 0x0F, 0x0F },  CF_CLAUSE | CF_ALU  },
+		{"CF_NATIVE",                     { 0x00, 0x00, 0x00, 0x00 },  0  }
 };
 
 
@@ -1112,7 +1113,7 @@ static const struct cf_op_info cf_op_table[] = {
 #define CF_OP_ALU_ELSE_AFTER               87
 
 /* CF_NATIVE means that r600_bytecode_cf contains pre-encoded native data */
-#define CF_NATIVE							(-1)
+#define CF_NATIVE                          88
 
 enum r600_chip_class {
 	ISA_CC_R600,
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 8d07b63..59a7f92 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -271,6 +271,7 @@ int r600_compute_shader_create(struct pipe_context * ctx,
 	r600_bytecode_init(shader_ctx.bc, r600_ctx->chip_class, r600_ctx->family,
 			   r600_ctx->screen->msaa_texture_support);
 	shader_ctx.bc->type = TGSI_PROCESSOR_COMPUTE;
+	shader_ctx.bc->isa = r600_ctx->isa;
 	r600_bytecode_from_byte_stream(&shader_ctx, bytes, byte_count);
 	if (shader_ctx.bc->chip_class == CAYMAN) {
 		cm_bytecode_add_cf_end(shader_ctx.bc);




More information about the mesa-commit mailing list