if (context_chipset(ctx) < 0x10) {
BEGIN_NV04(push, NV01_SUBC(SURF, OBJECT), 1);
PUSH_DATA (push, hw->surf3d->handle);
- PUSH_KICK(push);
}
}
dst_offset += dst->pitch * count;
h -= count;
}
-
- if (context_chipset(ctx) < 0x10)
- PUSH_KICK(push);
}
typedef unsigned (*get_offset_t)(struct nouveau_surface *s,
int dx, int dy, int sx, int sy,
int w, int h)
{
+ if (_mesa_is_format_compressed(src->format)) {
+ sx = get_format_blocksx(src->format, sx);
+ sy = get_format_blocksy(src->format, sy);
+ dx = get_format_blocksx(dst->format, dx);
+ dy = get_format_blocksy(dst->format, dy);
+ w = get_format_blocksx(src->format, w);
+ h = get_format_blocksy(src->format, h);
+ }
+
/* Linear texture copy. */
if ((src->layout == LINEAR && dst->layout == LINEAR) ||
dst->width <= 2 || dst->height <= 1) {
BEGIN_NV04(push, NV04_GDI(UNCLIPPED_RECTANGLE_POINT(0)), 2);
PUSH_DATA (push, (dx << 16) | dy);
PUSH_DATA (push, ( w << 16) | h);
-
- if (context_chipset(ctx) < 0x10)
- PUSH_KICK(push);
}
void