Tweaks to state emit, acheives first hw triangles from a pipe driver.

This commit is contained in:
Keith Whitwell 2007-08-09 11:19:09 +01:00
parent c046174eb0
commit 93b6e8aeac
4 changed files with 20 additions and 9 deletions

View 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 \

View 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)

View 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;

View 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
};