diff --git a/src/gallium/drivers/i915/i915_clear.c b/src/gallium/drivers/i915/i915_clear.c index e1d6a74..867d2c0 100644 --- a/src/gallium/drivers/i915/i915_clear.c +++ b/src/gallium/drivers/i915/i915_clear.c @@ -48,7 +48,7 @@ i915_clear_emit(struct pipe_context *pipe, unsigned buffers, const float *rgba, struct i915_context *i915 = i915_context(pipe); uint32_t clear_params, clear_color, clear_depth, clear_stencil, clear_color8888, packed_z_stencil; - union util_color u_color; + union util_color u_color, u_color8888; float f_depth = depth; struct i915_texture *cbuf_tex, *depth_tex; @@ -61,13 +61,16 @@ i915_clear_emit(struct pipe_context *pipe, unsigned buffers, const float *rgba, clear_params |= CLEARPARAM_WRITE_COLOR; cbuf_tex = i915_texture(cbuf->texture); util_pack_color(rgba, cbuf->format, &u_color); + if (util_format_get_blocksize(cbuf_tex->b.b.format) == 4) clear_color = u_color.ui; else clear_color = (u_color.ui & 0xffff) | (u_color.ui << 16); util_pack_color(rgba, cbuf->format, &u_color); - clear_color8888 = u_color.ui; + + util_pack_color(rgba, PIPE_FORMAT_B8G8R8A8_UNORM, &u_color8888); + clear_color8888 = u_color8888.ui; } else clear_color = clear_color8888 = 0; @@ -107,8 +110,10 @@ i915_clear_emit(struct pipe_context *pipe, unsigned buffers, const float *rgba, OUT_BATCH(_3DSTATE_CLEAR_PARAMETERS); OUT_BATCH(clear_params | CLEARPARAM_CLEAR_RECT); + /* Used for zone init prim */ OUT_BATCH(clear_color); OUT_BATCH(clear_depth); + /* Used for clear rect prim */ OUT_BATCH(clear_color8888); OUT_BATCH_F(f_depth); OUT_BATCH(clear_stencil); diff --git a/src/gallium/drivers/i915/i915_reg.h b/src/gallium/drivers/i915/i915_reg.h index 14e786d..7cdda97 100644 --- a/src/gallium/drivers/i915/i915_reg.h +++ b/src/gallium/drivers/i915/i915_reg.h @@ -720,9 +720,10 @@ #define MAPSURF_4BIT_INDEXED (7<<7) #define MS3_MT_FORMAT_MASK (0x7 << 3) #define MS3_MT_FORMAT_SHIFT 3 -#define MT_4BIT_IDX_ARGB8888 (7<<3) /* SURFACE_4BIT_INDEXED */ +#define MT_4BIT_P4 (7<<3) /* SURFACE_4BIT_INDEXED */ #define MT_8BIT_I8 (0<<3) /* SURFACE_8BIT */ #define MT_8BIT_L8 (1<<3) +#define MT_8BIT_A4P4 (1<<3) #define MT_8BIT_A8 (4<<3) #define MT_8BIT_MONO8 (5<<3) #define MT_16BIT_RGB565 (0<<3) /* SURFACE_16BIT */