r600: add support for mark bit to the assembler.
authorDave Airlie <airlied@redhat.com>
Thu, 31 Mar 2016 06:04:55 +0000 (16:04 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 2 Nov 2017 23:33:30 +0000 (09:33 +1000)
This adds support to the assembler for the mark bit
 on the export word1.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/eg_asm.c
src/gallium/drivers/r600/r600_asm.c
src/gallium/drivers/r600/r600_asm.h

index 19915cff8cbda69423549767d6893b499cb6e3e1..be9275185567047ee98d0c088da98e89efc7b56e 100644 (file)
@@ -89,6 +89,7 @@ int eg_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode_cf *cf)
                                        S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z(cf->output.swizzle_z) |
                                        S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W(cf->output.swizzle_w) |
                                        S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(cf->barrier) |
+                                       S_SQ_CF_ALLOC_EXPORT_WORD1_MARK(cf->mark) |
                                        S_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(opcode);
 
                        if (bc->chip_class == EVERGREEN) /* no EOP on cayman */
@@ -103,6 +104,7 @@ int eg_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode_cf *cf)
                                        S_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(cf->output.index_gpr);
                        bc->bytecode[id] = S_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(cf->output.burst_count - 1) |
                                        S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(cf->barrier) |
+                                       S_SQ_CF_ALLOC_EXPORT_WORD1_MARK(cf->mark) |
                                        S_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(opcode) |
                                        S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(cf->output.comp_mask) |
                                        S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(cf->output.array_size);
index 60c9cec4dbfb948d7576e8242117212208461883..a2c2ea74b3f1095655cda7190e98eed5042067d6 100644 (file)
@@ -2125,6 +2125,8 @@ void r600_bytecode_disasm(struct r600_bytecode *bc)
                                print_indent(o, 67);
 
                                fprintf(stderr, " ES:%X ", cf->output.elem_size);
+                               if (cf->mark)
+                                       fprintf(stderr, "MARK ");
                                if (!cf->barrier)
                                        fprintf(stderr, "NO_BARRIER ");
                                if (cf->end_of_program)
@@ -2165,6 +2167,8 @@ void r600_bytecode_disasm(struct r600_bytecode *bc)
                                fprintf(stderr, " ES:%i ", cf->output.elem_size);
                                if (cf->output.array_size != 0xFFF)
                                        fprintf(stderr, "AS:%i ", cf->output.array_size);
+                               if (cf->mark)
+                                       fprintf(stderr, "MARK ");
                                if (!cf->barrier)
                                        fprintf(stderr, "NO_BARRIER ");
                                if (cf->end_of_program)
index aa044c51ff7e9957f25c301c833cd3dbbc2dbe80..7a11d454c4a8d93dc37f859c3722eaab3001b9bb 100644 (file)
@@ -180,6 +180,7 @@ struct r600_bytecode_cf {
        unsigned                        eg_alu_extended;
        unsigned                        barrier;
        unsigned                        end_of_program;
+       unsigned                        mark;
        unsigned                        vpm;
        struct list_head                alu;
        struct list_head                tex;