Merge remote branch 'origin/master' into gallium_draw_llvm
[mesa.git] / src / gallium / drivers / i965 / brw_misc_state.c
index db8a2a5008867f8c6d79825c8194a58e16bf7b79..e3f25bdf622c4d570de7aeb9221a7ed5768e0e92 100644 (file)
@@ -37,6 +37,7 @@
 #include "brw_state.h"
 #include "brw_defines.h"
 #include "brw_screen.h"
+#include "brw_pipe_rast.h"
 
 
 
@@ -110,13 +111,17 @@ static int upload_binding_table_pointers(struct brw_context *brw)
    BEGIN_BATCH(6, IGNORE_CLIPRECTS);
    OUT_BATCH(CMD_BINDING_TABLE_PTRS << 16 | (6 - 2));
    if (brw->vs.bind_bo != NULL)
-      OUT_RELOC(brw->vs.bind_bo, I915_GEM_DOMAIN_SAMPLER, 0, 0); /* vs */
+      OUT_RELOC(brw->vs.bind_bo, 
+               BRW_USAGE_SAMPLER,
+               0); /* vs */
    else
       OUT_BATCH(0);
    OUT_BATCH(0); /* gs */
    OUT_BATCH(0); /* clip */
    OUT_BATCH(0); /* sf */
-   OUT_RELOC(brw->wm.bind_bo, I915_GEM_DOMAIN_SAMPLER, 0, 0); /* wm/ps */
+   OUT_RELOC(brw->wm.bind_bo,
+            BRW_USAGE_SAMPLER,
+            0); /* wm/ps */
    ADVANCE_BATCH();
    return 0;
 }
@@ -142,15 +147,27 @@ static int upload_pipelined_state_pointers(struct brw_context *brw )
 {
    BEGIN_BATCH(7, IGNORE_CLIPRECTS);
    OUT_BATCH(CMD_PIPELINED_STATE_POINTERS << 16 | (7 - 2));
-   OUT_RELOC(brw->vs.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
+   OUT_RELOC(brw->vs.state_bo, 
+            BRW_USAGE_STATE,
+            0);
    if (brw->gs.prog_active)
-      OUT_RELOC(brw->gs.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
+      OUT_RELOC(brw->gs.state_bo, 
+               BRW_USAGE_STATE,
+               1);
    else
       OUT_BATCH(0);
-   OUT_RELOC(brw->clip.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
-   OUT_RELOC(brw->sf.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-   OUT_RELOC(brw->wm.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-   OUT_RELOC(brw->cc.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
+   OUT_RELOC(brw->clip.state_bo, 
+            BRW_USAGE_STATE,
+            1);
+   OUT_RELOC(brw->sf.state_bo,
+            BRW_USAGE_STATE,
+            0);
+   OUT_RELOC(brw->wm.state_bo,
+            BRW_USAGE_STATE,
+            0);
+   OUT_RELOC(brw->cc.state_bo,
+            BRW_USAGE_STATE,
+            0);
    ADVANCE_BATCH();
 
    brw->state.dirty.brw |= BRW_NEW_PSP;
@@ -214,7 +231,7 @@ static int prepare_depthbuffer(struct brw_context *brw)
    struct pipe_surface *zsbuf = brw->curr.fb.zsbuf;
 
    if (zsbuf)
-      brw_add_validated_bo(brw, brw_surface_bo(zsbuf));
+      brw_add_validated_bo(brw, brw_surface(zsbuf)->bo);
 
    return 0;
 }
@@ -248,6 +265,7 @@ static int emit_depthbuffer(struct brw_context *brw)
         format = BRW_DEPTHFORMAT_D16_UNORM;
         cpp = 2;
         break;
+      case PIPE_FORMAT_Z24X8_UNORM:
       case PIPE_FORMAT_Z24S8_UNORM:
         format = BRW_DEPTHFORMAT_D24_UNORM_S8_UINT;
         cpp = 4;
@@ -261,8 +279,8 @@ static int emit_depthbuffer(struct brw_context *brw)
         return PIPE_ERROR_BAD_INPUT;
       }
 
-      bo = brw_surface_bo(surface);
-      pitch = brw_surface_pitch(surface);
+      bo = brw_surface(surface)->bo;
+      pitch = brw_surface(surface)->pitch;
 
       BEGIN_BATCH(len, IGNORE_CLIPRECTS);
       OUT_BATCH(CMD_DEPTH_BUFFER << 16 | (len - 2));
@@ -272,7 +290,7 @@ static int emit_depthbuffer(struct brw_context *brw)
                ((surface->layout != PIPE_SURFACE_LAYOUT_LINEAR) << 27) |
                (BRW_SURFACE_2D << 29));
       OUT_RELOC(bo,
-               I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
+               BRW_USAGE_DEPTH_BUFFER,
                surface->offset);
       OUT_BATCH((BRW_SURFACE_MIPMAPLAYOUT_BELOW << 1) |
                ((pitch - 1) << 6) |
@@ -326,8 +344,10 @@ const struct brw_tracked_state brw_polygon_stipple = {
 
 static int upload_line_stipple(struct brw_context *brw)
 {
-   struct brw_line_stipple *bls = NULL; //brw->curr.rast->bls;
-   BRW_CACHED_BATCH_STRUCT(brw, bls);
+   const struct brw_line_stipple *bls = &brw->curr.rast->bls;
+   if (bls->header.opcode) {
+      BRW_CACHED_BATCH_STRUCT(brw, bls);
+   }
    return 0;
 }
 
@@ -387,7 +407,7 @@ static int upload_invarient_state( struct brw_context *brw )
       BRW_BATCH_STRUCT(brw, &sip);
    }
 
-
+   /* VF Statistics */
    {
       struct brw_vf_statistics vfs;
       memset(&vfs, 0, sizeof(vfs));