i915: Fix surface operations

This commit is contained in:
Jakob Bornecrantz 2009-01-30 01:53:50 +01:00
parent 444e98de31
commit 48f7d86b7c
3 changed files with 21 additions and 21 deletions

View file

@ -38,7 +38,7 @@
void
i915_fill_blit(struct i915_context *i915,
unsigned cpp,
short dst_pitch,
unsigned short dst_pitch,
struct pipe_buffer *dst_buffer,
unsigned dst_offset,
short x, short y,
@ -47,15 +47,23 @@ i915_fill_blit(struct i915_context *i915,
{
unsigned BR13, CMD;
I915_DBG(i915,
"%s dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n",
__FUNCTION__,
dst_buffer, dst_pitch, dst_offset, x, y, w, h);
switch (cpp) {
case 1:
case 2:
case 3:
BR13 = dst_pitch | (0xF0 << 16) | (1 << 24);
BR13 = (((int) dst_pitch) & 0xffff) |
(0xF0 << 16) | (1 << 24);
CMD = XY_COLOR_BLT_CMD;
break;
case 4:
BR13 = dst_pitch | (0xF0 << 16) | (1 << 24) | (1 << 25);
BR13 = (((int) dst_pitch) & 0xffff) |
(0xF0 << 16) | (1 << 24) | (1 << 25);
CMD = (XY_COLOR_BLT_CMD | XY_COLOR_BLT_WRITE_ALPHA |
XY_COLOR_BLT_WRITE_RGB);
break;
@ -63,10 +71,6 @@ i915_fill_blit(struct i915_context *i915,
return;
}
// DBG("%s dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n",
// __FUNCTION__, dst_buffer, dst_pitch, dst_offset, x, y, w, h);
if (!BEGIN_BATCH(6, 1)) {
FLUSH_BATCH(NULL);
assert(BEGIN_BATCH(6, 1));
@ -85,10 +89,10 @@ void
i915_copy_blit( struct i915_context *i915,
unsigned do_flip,
unsigned cpp,
short src_pitch,
unsigned short src_pitch,
struct pipe_buffer *src_buffer,
unsigned src_offset,
short dst_pitch,
unsigned short dst_pitch,
struct pipe_buffer *dst_buffer,
unsigned dst_offset,
short src_x, short src_y,
@ -106,20 +110,16 @@ i915_copy_blit( struct i915_context *i915,
src_buffer, src_pitch, src_offset, src_x, src_y,
dst_buffer, dst_pitch, dst_offset, dst_x, dst_y, w, h);
src_pitch *= (short) cpp;
dst_pitch *= (short) cpp;
switch (cpp) {
case 1:
case 2:
case 3:
BR13 = (((int) dst_pitch) & 0xffff) |
BR13 = (((int) dst_pitch) & 0xffff) |
(0xCC << 16) | (1 << 24);
CMD = XY_SRC_COPY_BLT_CMD;
break;
case 4:
BR13 =
(((int) dst_pitch) & 0xffff) |
BR13 = (((int) dst_pitch) & 0xffff) |
(0xCC << 16) | (1 << 24) | (1 << 25);
CMD =
(XY_SRC_COPY_BLT_CMD | XY_SRC_COPY_BLT_WRITE_ALPHA |

View file

@ -33,10 +33,10 @@
extern void i915_copy_blit(struct i915_context *i915,
unsigned do_flip,
unsigned cpp,
short src_pitch,
unsigned short src_pitch,
struct pipe_buffer *src_buffer,
unsigned src_offset,
short dst_pitch,
unsigned short dst_pitch,
struct pipe_buffer *dst_buffer,
unsigned dst_offset,
short srcx, short srcy,
@ -45,7 +45,7 @@ extern void i915_copy_blit(struct i915_context *i915,
extern void i915_fill_blit(struct i915_context *i915,
unsigned cpp,
short dst_pitch,
unsigned short dst_pitch,
struct pipe_buffer *dst_buffer,
unsigned dst_offset,
short x, short y,

View file

@ -79,8 +79,8 @@ i915_surface_copy(struct pipe_context *pipe,
i915_copy_blit( i915_context(pipe),
do_flip,
dst->block.size,
(short) src->stride, src->buffer, src->offset,
(short) dst->stride, dst->buffer, dst->offset,
(unsigned short) src->stride, src->buffer, src->offset,
(unsigned short) dst->stride, dst->buffer, dst->offset,
(short) srcx, (short) srcy, (short) dstx, (short) dsty, (short) width, (short) height );
}
}
@ -106,7 +106,7 @@ i915_surface_fill(struct pipe_context *pipe,
assert(dst->block.height == 1);
i915_fill_blit( i915_context(pipe),
dst->block.size,
(short) dst->stride,
(unsigned short) dst->stride,
dst->buffer, dst->offset,
(short) dstx, (short) dsty,
(short) width, (short) height,