Tweaks to state emit, acheives first hw triangles from a pipe driver.
authorKeith Whitwell <keith@tungstengraphics.com>
Thu, 9 Aug 2007 10:19:09 +0000 (11:19 +0100)
committerKeith Whitwell <keith@tungstengraphics.com>
Thu, 9 Aug 2007 10:23:18 +0000 (11:23 +0100)
src/mesa/pipe/i915simple/Makefile
src/mesa/pipe/i915simple/i915_batch.h
src/mesa/pipe/i915simple/i915_state_emit.c
src/mesa/pipe/i915simple/i915_state_fragprog.c

index f8b14220fbc2e67c01b98d5700823f7196c801d3..93d9c6cf0129166a457d63795161dd5836984d5e 100644 (file)
@@ -12,6 +12,7 @@ DRIVER_SOURCES = \
        i915_context.c \
        i915_context.c \
        i915_debug.c \
+       i915_debug_fp.c \
        i915_regions.c \
        i915_state.c \
        i915_state_derived.c \
index b4ca8c38da76e5408cfeaefe83e7ac38547da3e0..8a35ff6a3aa5a102c4c31655cd4b81dbe5d99206 100644 (file)
@@ -45,7 +45,7 @@
 #define ADVANCE_BATCH()
 
 #define FLUSH_BATCH() do {                                     \
-/*   i915_dump_batchbuffer( i915, i915->batch_start, BEGIN_BATCH(0, 0) ); */   \
+   i915_dump_batchbuffer( i915, i915->batch_start, BEGIN_BATCH(0, 0) );        \
    i915->winsys->batch_flush( i915->winsys );                          \
    i915->batch_start = BEGIN_BATCH(0, 0);                              \
 } while (0)
index 4aa7e28a867378f4051df307beb142bc9285a9e1..aeb2d6753f2d0b1cbdc1a7e75e43c318ceca7be8 100644 (file)
@@ -112,7 +112,7 @@ i915_emit_hardware_state(struct i915_context *i915 )
    /* Need to initialize this to zero.
     */
    {
-      OUT_BATCH(_3DSTATE_LOAD_STATE_IMMEDIATE_1 | I1_LOAD_S(3) | (1));
+      OUT_BATCH(_3DSTATE_LOAD_STATE_IMMEDIATE_1 | I1_LOAD_S(3) | (0));
       OUT_BATCH(0);
    }
 
@@ -138,6 +138,7 @@ i915_emit_hardware_state(struct i915_context *i915 )
    {
       /* Don't support twosided stencil yet */
       OUT_BATCH(_3DSTATE_BACKFACE_STENCIL_OPS | BFO_ENABLE_STENCIL_TWO_SIDE | 0);
+      OUT_BATCH(0);
    }
 
 
@@ -150,11 +151,10 @@ i915_emit_hardware_state(struct i915_context *i915 )
                I1_LOAD_S(6) | 
                (3));
       
-      OUT_BATCH(0);
-      OUT_BATCH(S4_VFMT_XYZ | S4_VFMT_COLOR);
-      OUT_BATCH(0);
-      OUT_BATCH(S6_COLOR_WRITE_ENABLE |
-               (2 << S6_TRISTRIP_PV_SHIFT));
+      OUT_BATCH(0xffffffff);
+      OUT_BATCH(0x00902440); //      OUT_BATCH(S4_VFMT_XYZ | S4_VFMT_COLOR);
+      OUT_BATCH(0x00000002);
+      OUT_BATCH(0x00020216); // OUT_BATCH( S6_COLOR_WRITE_ENABLE | (2 << S6_TRISTRIP_PV_SHIFT));
    }
 
    {
@@ -167,7 +167,7 @@ i915_emit_hardware_state(struct i915_context *i915 )
                STENCIL_WRITE_MASK(0xff));
    }
    
-   {
+   if (0) {
       OUT_BATCH(_3DSTATE_INDEPENDENT_ALPHA_BLEND_CMD |
                IAB_MODIFY_ENABLE |
                IAB_MODIFY_FUNC |
@@ -175,6 +175,16 @@ i915_emit_hardware_state(struct i915_context *i915 )
                IAB_MODIFY_DST_FACTOR);
    }
 
+   {
+      //3DSTATE_INDEPENDENT_ALPHA_BLEND (1 dwords):
+      OUT_BATCH(0x6ba008a1);
+
+      //3DSTATE_CONSTANT_BLEND_COLOR (2 dwords):
+      OUT_BATCH(0x7d880000);
+      OUT_BATCH(0x00000000);
+   }
+
+
 
    if (i915->framebuffer.cbufs[0]) {
       struct pipe_region *cbuf_region = i915->framebuffer.cbufs[0]->region;
index e4639bc22372378491986becc3699262f9b5e486..83f43befafa6c08e65f07b5df36a5dfc5e07611c 100644 (file)
@@ -50,7 +50,7 @@ static unsigned passthrough[] =
     A0_DEST_CHANNEL_ALL | 
     (REG_TYPE_T << A0_SRC0_TYPE_SHIFT) |
     (T_DIFFUSE << A0_SRC0_NR_SHIFT)),
-   0,
+   0x01230000,                 /* .xyzw */
    0
 };