i965: bump VS thread number to 60 on SNB
authorZou Nan hai <nanhai.zou@intel.com>
Tue, 1 Mar 2011 02:39:35 +0000 (10:39 +0800)
committerZou Nan hai <nanhai.zou@intel.com>
Tue, 1 Mar 2011 02:39:35 +0000 (10:39 +0800)
Signed-off-by: Zou Nan hai <nanhai.zou@intel.com>
src/mesa/drivers/dri/i965/brw_vs_emit.c
src/mesa/drivers/dri/i965/gen6_vs_state.c

index 0411ce0b36c4957be58496d75b28452b4dc61f38..6ec62554cc4772f74aaba80492bea4aa656d16bb 100644 (file)
@@ -1561,6 +1561,7 @@ static void emit_vertex_write( struct brw_vs_compile *c)
    int eot;
    GLuint len_vertex_header = 2;
    int next_mrf, i;
+   int msg_len;
 
    if (c->key.copy_edgeflag) {
       brw_MOV(p, 
@@ -1727,13 +1728,20 @@ static void emit_vertex_write( struct brw_vs_compile *c)
 
    eot = (c->first_overflow_output == 0);
 
+   msg_len = c->nr_outputs + 2 + len_vertex_header; 
+   if (intel->gen >= 6) {
+          /* interleaved urb write message length for gen6 should be multiple of 2 */
+          if ((msg_len % 2) != 0)
+               msg_len++;
+   }
+
    brw_urb_WRITE(p, 
                 brw_null_reg(), /* dest */
                 0,             /* starting mrf reg nr */
                 c->r0,         /* src */
                 0,             /* allocate */
                 1,             /* used */
-                MIN2(c->nr_outputs + 1 + len_vertex_header, (BRW_MAX_MRF-1)), /* msg len */
+                MIN2(msg_len - 1, (BRW_MAX_MRF - 1)), /* msg len */
                 0,             /* response len */
                 eot,           /* eot */
                 eot,           /* writes complete */
index e68c0ac261c963e1b30f9edd4df92645b068bb13..ce0b8ea7eaa13bc5e7d70eedbf6b13e1cb18550e 100644 (file)
@@ -136,7 +136,8 @@ upload_vs_state(struct brw_context *brw)
    OUT_BATCH((1 << GEN6_VS_DISPATCH_START_GRF_SHIFT) |
             (brw->vs.prog_data->urb_read_length << GEN6_VS_URB_READ_LENGTH_SHIFT) |
             (0 << GEN6_VS_URB_ENTRY_READ_OFFSET_SHIFT));
-   OUT_BATCH((0 << GEN6_VS_MAX_THREADS_SHIFT) |
+
+   OUT_BATCH(((60 - 1) << GEN6_VS_MAX_THREADS_SHIFT) | /* max 60 threads for gen6 */
             GEN6_VS_STATISTICS_ENABLE |
             GEN6_VS_ENABLE);
    ADVANCE_BATCH();