i965: Dump out the correct shared function for SEND on Ironlake.
authorEric Anholt <eric@anholt.net>
Fri, 14 May 2010 00:24:36 +0000 (17:24 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 14 May 2010 18:27:59 +0000 (11:27 -0700)
src/mesa/drivers/dri/i965/brw_clip.c
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_disasm.c
src/mesa/drivers/dri/i965/brw_vs_emit.c
src/mesa/drivers/dri/i965/brw_wm_emit.c
src/mesa/drivers/dri/i965/brw_wm_glsl.c

index d08bd232987d3df78e9f47e3e2543a09ac72f1c1..49ef859e456126767e5592f03633d10765fced2a 100644 (file)
@@ -129,7 +129,8 @@ static void compile_clip_prog( struct brw_context *brw,
     if (INTEL_DEBUG & DEBUG_CLIP) {
       printf("clip:\n");
       for (i = 0; i < program_size / sizeof(struct brw_instruction); i++)
-        brw_disasm(stdout, &((struct brw_instruction *)program)[i]);
+        brw_disasm(stdout, &((struct brw_instruction *)program)[i],
+                   intel->gen);
       printf("\n");
     }
 
index 1f09651126b436518e7d4c7fb09c2d91c292d5a1..01567f9f0c0bf171811f023a54b02e74164cf9b2 100644 (file)
@@ -726,7 +726,7 @@ void brw_upload_urb_fence(struct brw_context *brw);
 void brw_upload_cs_urb_state(struct brw_context *brw);
 
 /* brw_disasm.c */
-int brw_disasm (FILE *file, struct brw_instruction *inst);
+int brw_disasm (FILE *file, struct brw_instruction *inst, int gen);
 
 /*======================================================================
  * Inline conversion functions.  These are better-typed than the
index db3fc50a63b5e4ca43220d44690746550550047a..9c600f28bdde6e326793ac39a9bfa8ad1e66b92b 100644 (file)
@@ -774,7 +774,7 @@ static int src1 (FILE *file, struct brw_instruction *inst)
     }
 }
 
-int brw_disasm (FILE *file, struct brw_instruction *inst)
+int brw_disasm (FILE *file, struct brw_instruction *inst, int gen)
 {
     int        err = 0;
     int space = 0;
@@ -829,12 +829,20 @@ int brw_disasm (FILE *file, struct brw_instruction *inst)
     }
 
     if (inst->header.opcode == BRW_OPCODE_SEND) {
+       int target;
+
+       if (gen >= 5)
+          target = inst->bits2.send_gen5.sfid;
+       else
+          target = inst->bits3.generic.msg_target;
+
        newline (file);
        pad (file, 16);
        space = 0;
        err |= control (file, "target function", target_function,
-                       inst->bits3.generic.msg_target, &space);
-       switch (inst->bits3.generic.msg_target) {
+                       target, &space);
+
+       switch (target) {
        case BRW_MESSAGE_TARGET_MATH:
            err |= control (file, "math function", math_function,
                            inst->bits3.math.function, &space);
index dc6ab81c4acc3a7967c6d09358b744d290e47ef7..0b44deeb634f2beb37e21c92aa7de5c454f66b64 100644 (file)
@@ -1882,7 +1882,7 @@ void brw_vs_emit(struct brw_vs_compile *c )
 
       printf("vs-native:\n");
       for (i = 0; i < p->nr_insn; i++)
-        brw_disasm(stderr, &p->store[i]);
+        brw_disasm(stderr, &p->store[i], intel->gen);
       printf("\n");
    }
 }
index 375e7953912389ab580249d86295278ee2b7d284..323cfac8fa7851872a6888cf744775dd427c5f08 100644 (file)
@@ -1717,7 +1717,7 @@ void brw_wm_emit( struct brw_wm_compile *c )
 
       printf("wm-native:\n");
       for (i = 0; i < p->nr_insn; i++)
-        brw_disasm(stderr, &p->store[i]);
+        brw_disasm(stderr, &p->store[i], p->brw->intel.gen);
       printf("\n");
    }
 }
index 88b885cb94147bc981e4f66ffc471a1c943f3052..fe3c89b7212c82617c1ecb130540dab660c5a7c1 100644 (file)
@@ -2111,7 +2111,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)
     if (INTEL_DEBUG & DEBUG_WM) {
       printf("wm-native:\n");
       for (i = 0; i < p->nr_insn; i++)
-        brw_disasm(stderr, &p->store[i]);
+        brw_disasm(stderr, &p->store[i], intel->gen);
       printf("\n");
     }
 }