Lines Matching +full:triple +full:- +full:channel
1 // SPDX-License-Identifier: GPL-2.0
54 par->fifo_space = 0; in aty_reset_engine()
73 pitch_value = info->fix.line_length / (info->var.bits_per_pixel / 8); in aty_init_engine()
74 vxres = info->var.xres_virtual; in aty_init_engine()
76 if (info->var.bits_per_pixel == 24) { in aty_init_engine()
77 /* In 24 bpp, the engine is in 8 bpp - this requires that all */ in aty_init_engine()
89 /* Ensure that vga page pointers are set to zero - the upper */ in aty_init_engine()
95 /* ---- Setup standard engine context ---- */ in aty_init_engine()
97 /* All GUI registers here are FIFOed - therefore, wait for */ in aty_init_engine()
142 aty_st_le32(SC_BOTTOM, par->crtc.vyres - 1, par); in aty_init_engine()
143 aty_st_le32(SC_RIGHT, vxres - 1, par); in aty_init_engine()
155 /* no-effect */ in aty_init_engine()
158 /* set primary source pixel channel to foreground color */ in aty_init_engine()
162 /* set compare functionality to false (no-effect on */ in aty_init_engine()
171 aty_st_le32(DP_PIX_WIDTH, par->crtc.dp_pix_width, par); in aty_init_engine()
172 aty_st_le32(DP_CHAIN_MASK, par->crtc.dp_chain_mask, par); in aty_init_engine()
196 par->blitter_may_be_busy = 1; in draw_rect()
201 struct atyfb_par *par = (struct atyfb_par *) info->par; in atyfb_copyarea()
202 u32 dy = area->dy, sy = area->sy, direction = DST_LAST_PEL; in atyfb_copyarea()
203 u32 sx = area->sx, dx = area->dx, width = area->width, rotation = 0; in atyfb_copyarea()
205 if (par->asleep) in atyfb_copyarea()
207 if (!area->width || !area->height) in atyfb_copyarea()
209 if (!par->accel_flags) { in atyfb_copyarea()
214 if (info->var.bits_per_pixel == 24) { in atyfb_copyarea()
215 /* In 24 bpp, the engine is in 8 bpp - this requires that all */ in atyfb_copyarea()
222 if (area->sy < area->dy) { in atyfb_copyarea()
223 dy += area->height - 1; in atyfb_copyarea()
224 sy += area->height - 1; in atyfb_copyarea()
229 dx += width - 1; in atyfb_copyarea()
230 sx += width - 1; in atyfb_copyarea()
234 if (info->var.bits_per_pixel == 24) { in atyfb_copyarea()
239 aty_st_le32(DP_PIX_WIDTH, par->crtc.dp_pix_width, par); in atyfb_copyarea()
242 aty_st_le32(SRC_HEIGHT1_WIDTH1, (width << 16) | area->height, par); in atyfb_copyarea()
244 draw_rect(dx, dy, width, area->height, par); in atyfb_copyarea()
249 struct atyfb_par *par = (struct atyfb_par *) info->par; in atyfb_fillrect()
250 u32 color, dx = rect->dx, width = rect->width, rotation = 0; in atyfb_fillrect()
252 if (par->asleep) in atyfb_fillrect()
254 if (!rect->width || !rect->height) in atyfb_fillrect()
256 if (!par->accel_flags) { in atyfb_fillrect()
261 if (info->fix.visual == FB_VISUAL_TRUECOLOR || in atyfb_fillrect()
262 info->fix.visual == FB_VISUAL_DIRECTCOLOR) in atyfb_fillrect()
263 color = ((u32 *)(info->pseudo_palette))[rect->color]; in atyfb_fillrect()
265 color = rect->color; in atyfb_fillrect()
267 if (info->var.bits_per_pixel == 24) { in atyfb_fillrect()
268 /* In 24 bpp, the engine is in 8 bpp - this requires that all */ in atyfb_fillrect()
276 aty_st_le32(DP_PIX_WIDTH, par->crtc.dp_pix_width, par); in atyfb_fillrect()
284 draw_rect(dx, rect->dy, width, rect->height, par); in atyfb_fillrect()
289 struct atyfb_par *par = (struct atyfb_par *) info->par; in atyfb_imageblit()
290 u32 src_bytes, dx = image->dx, dy = image->dy, width = image->width; in atyfb_imageblit()
293 if (par->asleep) in atyfb_imageblit()
295 if (!image->width || !image->height) in atyfb_imageblit()
297 if (!par->accel_flags || in atyfb_imageblit()
298 (image->depth != 1 && info->var.bits_per_pixel != image->depth)) { in atyfb_imageblit()
303 pix_width = par->crtc.dp_pix_width; in atyfb_imageblit()
305 switch (image->depth) { in atyfb_imageblit()
336 if (info->var.bits_per_pixel == 24) { in atyfb_imageblit()
337 /* In 24 bpp, the engine is in 8 bpp - this requires that all */ in atyfb_imageblit()
349 * this hwaccelerated triple has an issue with not aligned data in atyfb_imageblit()
351 if (image->depth == 1 && M64_HAS(HW_TRIPLE) && image->width % 8 == 0) in atyfb_imageblit()
355 if (image->depth == 1) { in atyfb_imageblit()
357 if (info->fix.visual == FB_VISUAL_TRUECOLOR || in atyfb_imageblit()
358 info->fix.visual == FB_VISUAL_DIRECTCOLOR) { in atyfb_imageblit()
359 fg = ((u32*)(info->pseudo_palette))[image->fg_color]; in atyfb_imageblit()
360 bg = ((u32*)(info->pseudo_palette))[image->bg_color]; in atyfb_imageblit()
362 fg = image->fg_color; in atyfb_imageblit()
363 bg = image->bg_color; in atyfb_imageblit()
383 draw_rect(dx, dy, width, image->height, par); in atyfb_imageblit()
384 src_bytes = (((image->width * image->depth) + 7) / 8) * image->height; in atyfb_imageblit()
386 /* manual triple each pixel */ in atyfb_imageblit()
387 if (image->depth == 1 && info->var.bits_per_pixel == 24 && !(pix_width & DP_HOST_TRIPLE_EN)) { in atyfb_imageblit()
389 u8 *pbitmapin = (u8*)image->data, *pbitmapout; in atyfb_imageblit()
392 for (width = image->width, inbit = 7, mult24 = 0; src_bytes; ) { in atyfb_imageblit()
396 for (outbit = 7; outbit >= 0; outbit--) { in atyfb_imageblit()
402 inbit--; in atyfb_imageblit()
403 width--; in atyfb_imageblit()
408 src_bytes--; in atyfb_imageblit()
413 width = image->width; in atyfb_imageblit()
424 for (pbitmap = (u32*)(image->data); dwords; dwords--, pbitmap++) { in atyfb_imageblit()