summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Stellard <[email protected]>2013-02-04 19:31:54 +0000
committerTom Stellard <[email protected]>2013-02-05 15:41:33 +0000
commit8aaee4d64e362137fabfe536a686638a6cc882bc (patch)
tree668be51fd0a548815739529ccbf47ab82d28b895
parent02a423b23936a0757f5171535235707c5444b9bc (diff)
r600g/compute: Fix segfault caused by new shader disassembler
-rw-r--r--src/gallium/drivers/r600/r600_isa.h5
-rw-r--r--src/gallium/drivers/r600/r600_shader.c1
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 5028a951efc..c6f115fc070 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 8d07b638555..59a7f92d2c0 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);