23 #define LAST_DESCRIPTOR (1 << 31)
24 #define SYSTEM_TO_FRAME_BUFFER 0
30 rotation = (dx / 4) % 6;
32 rotation = ((dx + 2) / 4) % 6;
53 static void reset_GTC_3D_engine(
const struct atyfb_par *par)
69 pitch_value = info->
fix.line_length / (info->
var.bits_per_pixel / 8);
70 vxres = info->
var.xres_virtual;
72 if (info->
var.bits_per_pixel == 24) {
81 reset_GTC_3D_engine(par);
95 wait_for_fifo(14, par);
127 wait_for_fifo(13, par);
160 wait_for_fifo(3, par);
166 wait_for_fifo(2, par);
170 wait_for_fifo(5, par);
189 wait_for_fifo(2, par);
199 u32 sx = area->
sx, dx = area->
dx, width = area->
width, rotation = 0;
210 if (info->
var.bits_per_pixel == 24) {
218 if (area->
sy < area->
dy) {
230 if (info->
var.bits_per_pixel == 24) {
234 wait_for_fifo(4, par);
239 draw_rect(dx, dy, width, area->
height, par);
262 if (info->
var.bits_per_pixel == 24) {
270 wait_for_fifo(3, par);
278 draw_rect(dx, rect->
dy, width, rect->
height, par);
284 u32 src_bytes, dx = image->
dx, dy = image->
dy, width = image->
width;
285 u32 pix_width_save, pix_width, host_cntl, rotation = 0,
src,
mix;
292 (image->
depth != 1 && info->
var.bits_per_pixel != image->
depth)) {
300 switch (image->
depth) {
331 if (info->
var.bits_per_pixel == 24) {
350 if (image->
depth == 1) {
361 wait_for_fifo(2, par);
371 wait_for_fifo(6, par);
379 draw_rect(dx, dy, width, image->
height, par);
384 int inbit, outbit, mult24, byte_id_in_dword,
width;
385 u8 *pbitmapin = (
u8*)image->
data, *pbitmapout;
388 for (width = image->
width, inbit = 7, mult24 = 0; src_bytes; ) {
389 for (hostdword = 0, pbitmapout = (
u8*)&hostdword, byte_id_in_dword = 0;
390 byte_id_in_dword < 4 && src_bytes;
391 byte_id_in_dword++, pbitmapout++) {
392 for (outbit = 7; outbit >= 0; outbit--) {
393 *pbitmapout |= (((*pbitmapin >> inbit) & 1) << outbit);
403 if (inbit < 0 || width == 0) {
409 width = image->
width;
415 wait_for_fifo(1, par);
419 u32 *pbitmap, dwords = (src_bytes + 3) / 4;
420 for (pbitmap = (
u32*)(image->
data); dwords; dwords--, pbitmap++) {
421 wait_for_fifo(1, par);
427 wait_for_fifo(1, par);