diff options
author | wkoszek <wkoszek@FreeBSD.org> | 2007-12-29 23:26:59 +0000 |
---|---|---|
committer | wkoszek <wkoszek@FreeBSD.org> | 2007-12-29 23:26:59 +0000 |
commit | bb029b61d9d00673b61ff3bd4589761e3ddbd060 (patch) | |
tree | 2208d9a465b1ecf2354401f83d3b431d9003169a /sys/dev/fb | |
parent | 8a0ce839351386ec837779aa9f63b575cf8d096a (diff) | |
download | FreeBSD-src-bb029b61d9d00673b61ff3bd4589761e3ddbd060.zip FreeBSD-src-bb029b61d9d00673b61ff3bd4589761e3ddbd060.tar.gz |
Replace explicit calls to video methods with their respective variants
implemented with macros. This patch improves code readability. Reasoning
behind vidd_* is a sort of "video discipline".
List of macros is supposed to be complete--all methods of video_switch
ought to have their respective macros from now on.
Functionally, this code should be no-op. My intention is to leave current
behaviour of touched code as is.
No objections: rwatson
Silence on: freebsd-current@
Approved by: cognet
Diffstat (limited to 'sys/dev/fb')
-rw-r--r-- | sys/dev/fb/creator.c | 4 | ||||
-rw-r--r-- | sys/dev/fb/fb.c | 19 | ||||
-rw-r--r-- | sys/dev/fb/fbreg.h | 78 | ||||
-rw-r--r-- | sys/dev/fb/machfb.c | 2 | ||||
-rw-r--r-- | sys/dev/fb/splash_bmp.c | 22 | ||||
-rw-r--r-- | sys/dev/fb/splash_pcx.c | 14 | ||||
-rw-r--r-- | sys/dev/fb/vga.c | 32 |
7 files changed, 112 insertions, 59 deletions
diff --git a/sys/dev/fb/creator.c b/sys/dev/fb/creator.c index 2a34685..f1a4213 100644 --- a/sys/dev/fb/creator.c +++ b/sys/dev/fb/creator.c @@ -845,9 +845,9 @@ creator_puts(video_adapter_t *adp, vm_offset_t off, u_int16_t *s, int len) int i; for (i = 0; i < len; i++) { - (*vidsw[adp->va_index]->putc)(adp, off + i, s[i] & 0xff, - (s[i] & 0xff00) >> 8); + vidd_putc(adp, off + i, s[i] & 0xff, (s[i] & 0xff00) >> 8); } + return (0); } diff --git a/sys/dev/fb/fb.c b/sys/dev/fb/fb.c index ea9c996..dbb9f36 100644 --- a/sys/dev/fb/fb.c +++ b/sys/dev/fb/fb.c @@ -484,7 +484,7 @@ int genfbread(genfb_softc_t *sc, video_adapter_t *adp, struct uio *uio, len = imin(len, adp->va_window_size - offset); if (len <= 0) break; - (*vidsw[adp->va_index]->set_win_org)(adp, uio->uio_offset); + vidd_set_win_org(adp, uio->uio_offset); error = uiomove((caddr_t)(adp->va_window + offset), len, uio); if (error) break; @@ -505,7 +505,7 @@ int genfbioctl(genfb_softc_t *sc, video_adapter_t *adp, u_long cmd, if (adp == NULL) /* XXX */ return ENXIO; - error = (*vidsw[adp->va_index]->ioctl)(adp, cmd, arg); + error = vidd_ioctl(adp, cmd, arg); if (error == ENOIOCTL) error = ENODEV; return error; @@ -514,7 +514,7 @@ int genfbioctl(genfb_softc_t *sc, video_adapter_t *adp, u_long cmd, int genfbmmap(genfb_softc_t *sc, video_adapter_t *adp, vm_offset_t offset, vm_offset_t *paddr, int prot) { - return (*vidsw[adp->va_index]->mmap)(adp, offset, paddr, prot); + return vidd_mmap(adp, offset, paddr, prot); } #endif /* FB_INSTALL_CDEV */ @@ -686,16 +686,15 @@ fb_commonioctl(video_adapter_t *adp, u_long cmd, caddr_t arg) break; case FBIO_MODEINFO: /* get mode information */ - error = (*vidsw[adp->va_index]->get_info)(adp, - ((video_info_t *)arg)->vi_mode, - (video_info_t *)arg); + error = vidd_get_info(adp, + ((video_info_t *)arg)->vi_mode, + (video_info_t *)arg); if (error) error = ENODEV; break; case FBIO_FINDMODE: /* find a matching video mode */ - error = (*vidsw[adp->va_index]->query_mode)(adp, - (video_info_t *)arg); + error = vidd_query_mode(adp, (video_info_t *)arg); break; case FBIO_GETMODE: /* get video mode */ @@ -703,7 +702,7 @@ fb_commonioctl(video_adapter_t *adp, u_long cmd, caddr_t arg) break; case FBIO_SETMODE: /* set video mode */ - error = (*vidsw[adp->va_index]->set_mode)(adp, *(int *)arg); + error = vidd_set_mode(adp, *(int *)arg); if (error) error = ENODEV; /* EINVAL? */ break; @@ -722,7 +721,7 @@ fb_commonioctl(video_adapter_t *adp, u_long cmd, caddr_t arg) break; case FBIO_BLANK: /* blank display */ - error = (*vidsw[adp->va_index]->blank_display)(adp, *(int *)arg); + error = vidd_blank_display(adp, *(int *)arg); break; case FBIO_GETPALETTE: /* get color palette */ diff --git a/sys/dev/fb/fbreg.h b/sys/dev/fb/fbreg.h index 30d341d..0be91d3 100644 --- a/sys/dev/fb/fbreg.h +++ b/sys/dev/fb/fbreg.h @@ -189,20 +189,74 @@ typedef struct video_switch { vi_putm_t *putm; } video_switch_t; -#define save_palette(adp, pal) \ - (*vidsw[(adp)->va_index]->save_palette)((adp), (pal)) -#define load_palette(adp, pal) \ - (*vidsw[(adp)->va_index]->load_palette)((adp), (pal)) -#define get_mode_info(adp, mode, buf) \ - (*vidsw[(adp)->va_index]->get_info)((adp), (mode), (buf)) -#define set_video_mode(adp, mode) \ +#define vidd_probe(unit, adpp, arg, flags) \ + (*vidsw[(adp)->va_index]->probe)((unit), (adpp), (arg), (flags)) +#define vidd_init(unit, adp, flags) \ + (*vidsw[(adp)->va_index]->init)((unit), (adp), (flags)) +#define vidd_get_info(adp, mode, info) \ + (*vidsw[(adp)->va_index]->get_info)((adp), (mode), (info)) +#define vidd_query_mode(adp, mode) \ + (*vidsw[(adp)->va_index]->query_mode)((adp), (mode)) +#define vidd_set_mode(adp, mode) \ (*vidsw[(adp)->va_index]->set_mode)((adp), (mode)) -#define set_border(adp, border) \ +#define vidd_save_font(adp, page, size, width, data, c, count) \ + (*vidsw[(adp)->va_index]->save_font)((adp), (page), (size), \ + (width), (data), (c), (count)) +#define vidd_load_font(adp, page, size, width, data, c, count) \ + (*vidsw[(adp)->va_index]->load_font)((adp), (page), (size), \ + (width), (data), (c), (count)) +#define vidd_show_font(adp, page) \ + (*vidsw[(adp)->va_index]->show_font)((adp), (page)) +#define vidd_save_palette(adp, pallete) \ + (*vidsw[(adp)->va_index]->save_palette)((adp), (pallete)) +#define vidd_load_palette(adp, pallete) \ + (*vidsw[(adp)->va_index]->load_palette)((adp), (pallete)) +#define vidd_set_border(adp, border) \ (*vidsw[(adp)->va_index]->set_border)((adp), (border)) -#define set_origin(adp, o) \ - (*vidsw[(adp)->va_index]->set_win_org)(adp, o) - -/* XXX - add more macros */ +#define vidd_save_state(adp, p, size) \ + (*vidsw[(adp)->va_index]->save_state)((adp), (p), (size)) +#define vidd_load_state(adp, p) \ + (*vidsw[(adp)->va_index]->load_state)((adp), (p)) +#define vidd_set_win_org(adp, offset) \ + (*vidsw[(adp)->va_index]->set_win_org)((adp), (offset)) +#define vidd_read_hw_cursor(adp, col, row) \ + (*vidsw[(adp)->va_index]->read_hw_cursor)((adp), (col), (row)) +#define vidd_set_hw_cursor(adp, col, row) \ + (*vidsw[(adp)->va_index]->set_hw_cursor)((adp), (col), (row)) +#define vidd_set_hw_cursor_shape(adp, base, height, celsize, blink) \ + (*vidsw[(adp)->va_index]->set_hw_cursor_shape)((adp), (base), \ + (height), (celsize), (blink)) +#define vidd_blank_display(adp, mode) \ + (*vidsw[(adp)->va_index]->blank_display)((adp), (mode)) +#define vidd_mmap(adp, offset, paddr, prot) \ + (*vidsw[(adp)->va_index]->mmap)((adp), (offset), (paddr), (prot)) +#define vidd_ioctl(adp, cmd, data) \ + (*vidsw[(adp)->va_index]->ioctl)((adp), (cmd), (data)) +#define vidd_clear(adp) \ + (*vidsw[(adp)->va_index]->clear)((adp)) +#define vidd_fill_rect(adp, val, x, y, cx, cy) \ + (*vidsw[(adp)->va_index]->fill_rect)((adp), (val), (x), (y), \ + (cx), (cy)) +#define vidd_bitblt(adp, ...) \ + (*vidsw[(adp)->va_index]->bitblt)(adp, __VA_ARGS__) +#define vidd_diag(adp, level) \ + (*vidsw[(adp)->va_index]->diag)((adp), (level)) +#define vidd_save_cursor_palette(adp, palette) \ + (*vidsw[(adp)->va_index]->save_cursor_palette)((adp), (palette)) +#define vidd_load_cursor_palette(adp, palette) \ + (*vidsw[(adp)->va_index]->load_cursor_palette)((adp), (palette)) +#define vidd_copy(adp, src, dst, n) \ + (*vidsw[(adp)->va_index]->copy)((adp), (src), (dst), (n)) +#define vidd_putp(adp, offset, p, a, size, bpp, bit_ltor1, byte_ltor2) \ + (*vidsw[(adp)->va_index]->putp)((adp), (offset), (p), (a), \ + (size), (bpp), (bit_ltor1), (bit_ltor2)) +#define vidd_putc(adp, offset, c, a) \ + (*vidsw[(adp)->va_index]->putc)((adp), (offset), (c), (a)) +#define vidd_puts(adp, offset, s, len) \ + (*vidsw[(adp)->va_index]->puts)((adp), (offset), (s), (len)) +#define vidd_putm(adp, x, y, pixel_image, pixel_mask, size, width) \ + (*vidsw[(adp)->va_index]->putm)((adp), (x), (y), (pixel_image), \ + (pixel_mask), (size), (width)) /* video driver */ typedef struct video_driver { diff --git a/sys/dev/fb/machfb.c b/sys/dev/fb/machfb.c index eb128eb..85674fa 100644 --- a/sys/dev/fb/machfb.c +++ b/sys/dev/fb/machfb.c @@ -1113,7 +1113,7 @@ machfb_puts(video_adapter_t *adp, vm_offset_t off, uint16_t *s, int len) MACHFB_BLANK; blanks = 0; } - (*vidsw[adp->va_index]->putc)(adp, off + i, c, a); + vidd_putc(adp, off + i, c, a); } } if (blanks != 0) diff --git a/sys/dev/fb/splash_bmp.c b/sys/dev/fb/splash_bmp.c index 139d1e9..517a3ef 100644 --- a/sys/dev/fb/splash_bmp.c +++ b/sys/dev/fb/splash_bmp.c @@ -94,9 +94,9 @@ bmp_start(video_adapter_t *adp) return ENODEV; } for (i = 0; modes[i] >= 0; ++i) { - if (((*vidsw[adp->va_index]->get_info)(adp, modes[i], &info) == 0) - && (bmp_Init((u_char *)bmp_decoder.data, - info.vi_width, info.vi_height, info.vi_depth) == 0)) + if ((vidd_get_info(adp, modes[i], &info) == 0) && + (bmp_Init((u_char *)bmp_decoder.data, info.vi_width, + info.vi_height, info.vi_depth) == 0)) break; } splash_mode = modes[i]; @@ -127,11 +127,11 @@ bmp_splash(video_adapter_t *adp, int on) if (on) { if (!splash_on) { /* set up the video mode and draw something */ - if ((*vidsw[adp->va_index]->set_mode)(adp, splash_mode)) + if (vidd_set_mode(adp, splash_mode)) return 1; if (bmp_Draw(adp)) return 1; - (*vidsw[adp->va_index]->save_palette)(adp, pal); + vidd_save_palette(adp, pal); time_stamp = 0; splash_on = TRUE; } @@ -160,7 +160,7 @@ bmp_splash(video_adapter_t *adp, int on) for (i = 0; i < sizeof(pal); ++i) { tpal[i] = pal[i] * brightness / FADE_LEVELS; } - (*vidsw[adp->va_index]->load_palette)(adp, tpal); + vidd_load_palette(adp, tpal); time_stamp = tv.tv_sec; } } @@ -298,7 +298,7 @@ bmp_SetPix(BMP_INFO *info, int x, int y, u_char val) sofs += (x >> 3); newbank = sofs/info->adp->va_window_size; if (info->bank != newbank) { - (*vidsw[info->adp->va_index]->set_win_org)(info->adp, newbank*info->adp->va_window_size); + vidd_set_win_org(info->adp, newbank*info->adp->va_window_size); info->bank = newbank; } sofs %= info->adp->va_window_size; @@ -313,7 +313,7 @@ bmp_SetPix(BMP_INFO *info, int x, int y, u_char val) sofs += x; newbank = sofs/info->adp->va_window_size; if (info->bank != newbank) { - (*vidsw[info->adp->va_index]->set_win_org)(info->adp, newbank*info->adp->va_window_size); + vidd_set_win_org(info->adp, newbank*info->adp->va_window_size); info->bank = newbank; } sofs %= info->adp->va_window_size; @@ -601,8 +601,8 @@ bmp_Draw(video_adapter_t *adp) /* clear the screen */ bmp_info.vidmem = (u_char *)adp->va_window; bmp_info.adp = adp; - (*vidsw[adp->va_index]->clear)(adp); - (*vidsw[adp->va_index]->set_win_org)(adp, 0); + vidd_clear(adp); + vidd_set_win_org(adp, 0); bmp_info.bank = 0; /* initialise the info structure for drawing */ @@ -612,7 +612,7 @@ bmp_Draw(video_adapter_t *adp) #endif /* set the palette for our image */ - (*vidsw[adp->va_index]->load_palette)(adp, (u_char *)&bmp_info.palette); + vidd_load_palette(adp, (u_char *)&bmp_info.palette); #if 0 #ifndef PC98 diff --git a/sys/dev/fb/splash_pcx.c b/sys/dev/fb/splash_pcx.c index e67bb24..641b036 100644 --- a/sys/dev/fb/splash_pcx.c +++ b/sys/dev/fb/splash_pcx.c @@ -98,7 +98,7 @@ pcx_start(video_adapter_t *adp) pcx_info.bpp, pcx_info.planes); for (i = 0; modes[i] >= 0; ++i) { - if (get_mode_info(adp, modes[i], &info) != 0) + if (vidd_get_info(adp, modes[i], &info) != 0) continue; if (bootverbose) printf("splash_pcx: considering mode %d:\n" @@ -136,7 +136,7 @@ pcx_splash(video_adapter_t *adp, int on) { if (on) { if (!splash_on) { - if (set_video_mode(adp, splash_mode) || pcx_draw(adp)) + if (vidd_set_mode(adp, splash_mode) || pcx_draw(adp)) return 1; splash_on = TRUE; } @@ -208,7 +208,7 @@ pcx_draw(video_adapter_t *adp) if (pcx_info.zlen < 1) return (1); - load_palette(adp, pcx_info.palette); + vidd_load_palette(adp, pcx_info.palette); vidmem = (uint8_t *)adp->va_window; swidth = adp->va_info.vi_width; @@ -219,7 +219,7 @@ pcx_draw(video_adapter_t *adp) banksize = adp->va_window_size; for (origin = 0; origin < sheight*sbpsl; origin += banksize) { - set_origin(adp, origin); + vidd_set_win_org(adp, origin); bzero(vidmem, banksize); } @@ -231,7 +231,7 @@ pcx_draw(video_adapter_t *adp) pos -= banksize; origin += banksize; } - set_origin(adp, origin); + vidd_set_win_org(adp, origin); for (scan = i = 0; scan < pcx_info.height; ++scan, ++y, pos += sbpsl) { for (j = 0; j < pcx_info.bpsl && i < pcx_info.zlen; ++i) { @@ -251,7 +251,7 @@ pcx_draw(video_adapter_t *adp) if (pos > banksize) { origin += banksize; pos -= banksize; - set_origin(adp, origin); + vidd_set_win_org(adp, origin); } if (pos + pcx_info.width > banksize) { @@ -260,7 +260,7 @@ pcx_draw(video_adapter_t *adp) bcopy(line, vidmem + pos, j); origin += banksize; pos -= banksize; - set_origin(adp, origin); + vidd_set_win_org(adp, origin); bcopy(line + j, vidmem, pcx_info.width - j); } else { bcopy(line, vidmem + pos, pcx_info.width); diff --git a/sys/dev/fb/vga.c b/sys/dev/fb/vga.c index 6650569..9383e0a 100644 --- a/sys/dev/fb/vga.c +++ b/sys/dev/fb/vga.c @@ -1656,7 +1656,7 @@ setup_grmode: update_adapter_info(adp, &info); /* move hardware cursor out of the way */ - (*vidsw[adp->va_index]->set_hw_cursor)(adp, -1, -1); + vidd_set_hw_cursor(adp, -1, -1); return 0; #else /* VGA_NO_MODE_CHANGE */ @@ -2502,7 +2502,7 @@ planar_fill(video_adapter_t *adp, int val) length = adp->va_line_width*adp->va_info.vi_height; while (length > 0) { l = imin(length, adp->va_window_size); - (*vidsw[adp->va_index]->set_win_org)(adp, at); + vidd_set_win_org(adp, at); bzero_io(adp->va_window, l); length -= l; at += l; @@ -2522,7 +2522,7 @@ packed_fill(video_adapter_t *adp, int val) length = adp->va_line_width*adp->va_info.vi_height; while (length > 0) { l = imin(length, adp->va_window_size); - (*vidsw[adp->va_index]->set_win_org)(adp, at); + vidd_set_win_org(adp, at); fill_io(val, adp->va_window, l); length -= l; at += l; @@ -2540,7 +2540,7 @@ direct_fill(video_adapter_t *adp, int val) length = adp->va_line_width*adp->va_info.vi_height; while (length > 0) { l = imin(length, adp->va_window_size); - (*vidsw[adp->va_index]->set_win_org)(adp, at); + vidd_set_win_org(adp, at); switch (adp->va_info.vi_pixel_size) { case sizeof(u_int16_t): fillw_io(val, adp->va_window, l/sizeof(u_int16_t)); @@ -2599,7 +2599,7 @@ planar_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy) while (cy > 0) { pos = adp->va_line_width*y + x/8; if (bank != pos/banksize) { - (*vidsw[adp->va_index]->set_win_org)(adp, pos); + vidd_set_win_org(adp, pos); bank = pos/banksize; } offset = pos%banksize; @@ -2612,7 +2612,7 @@ planar_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy) if (offset >= banksize) { offset = 0; ++bank; /* next bank */ - (*vidsw[adp->va_index]->set_win_org)(adp, bank*banksize); + vidd_set_win_org(adp, bank*banksize); } outw(GDCIDX, 0xff08); /* bit mask */ } @@ -2624,7 +2624,7 @@ planar_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy) if (offset >= banksize) { offset = 0; ++bank; /* next bank */ - (*vidsw[adp->va_index]->set_win_org)(adp, bank*banksize); + vidd_set_win_org(adp, bank*banksize); } } if ((x + cx) % 8) { @@ -2634,7 +2634,7 @@ planar_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy) if (offset >= banksize) { offset = 0; ++bank; /* next bank */ - (*vidsw[adp->va_index]->set_win_org)(adp, bank*banksize); + vidd_set_win_org(adp, bank*banksize); } outw(GDCIDX, 0xff08); /* bit mask */ } @@ -2662,7 +2662,7 @@ packed_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy) while (cy > 0) { pos = adp->va_line_width*y + x*adp->va_info.vi_pixel_size; if (bank != pos/banksize) { - (*vidsw[adp->va_index]->set_win_org)(adp, pos); + vidd_set_win_org(adp, pos); bank = pos/banksize; } offset = pos%banksize; @@ -2672,7 +2672,7 @@ packed_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy) /* the line may cross the window boundary */ if (offset + cx > banksize) { ++bank; /* next bank */ - (*vidsw[adp->va_index]->set_win_org)(adp, bank*banksize); + vidd_set_win_org(adp, bank*banksize); end = offset + cx - banksize; fill_io(val, adp->va_window, end/adp->va_info.vi_pixel_size); } @@ -2700,7 +2700,7 @@ direct_fill_rect16(video_adapter_t *adp, int val, int x, int y, int cx, int cy) while (cy > 0) { pos = adp->va_line_width*y + x*sizeof(u_int16_t); if (bank != pos/banksize) { - (*vidsw[adp->va_index]->set_win_org)(adp, pos); + vidd_set_win_org(adp, pos); bank = pos/banksize; } offset = pos%banksize; @@ -2710,7 +2710,7 @@ direct_fill_rect16(video_adapter_t *adp, int val, int x, int y, int cx, int cy) /* the line may cross the window boundary */ if (offset + cx > banksize) { ++bank; /* next bank */ - (*vidsw[adp->va_index]->set_win_org)(adp, bank*banksize); + vidd_set_win_org(adp, bank*banksize); end = offset + cx - banksize; fillw_io(val, adp->va_window, end/sizeof(u_int16_t)); } @@ -2740,7 +2740,7 @@ direct_fill_rect24(video_adapter_t *adp, int val, int x, int y, int cx, int cy) while (cy > 0) { pos = adp->va_line_width*y + x*3; if (bank != pos/banksize) { - (*vidsw[adp->va_index]->set_win_org)(adp, pos); + vidd_set_win_org(adp, pos); bank = pos/banksize; } offset = pos%banksize; @@ -2751,7 +2751,7 @@ direct_fill_rect24(video_adapter_t *adp, int val, int x, int y, int cx, int cy) /* the line may cross the window boundary */ if (offset + cx >= banksize) { ++bank; /* next bank */ - (*vidsw[adp->va_index]->set_win_org)(adp, bank*banksize); + vidd_set_win_org(adp, bank*banksize); j = 0; end = offset + cx - banksize; for (; j < end; i = (++i)%3, ++j) { @@ -2782,7 +2782,7 @@ direct_fill_rect32(video_adapter_t *adp, int val, int x, int y, int cx, int cy) while (cy > 0) { pos = adp->va_line_width*y + x*sizeof(u_int32_t); if (bank != pos/banksize) { - (*vidsw[adp->va_index]->set_win_org)(adp, pos); + vidd_set_win_org(adp, pos); bank = pos/banksize; } offset = pos%banksize; @@ -2792,7 +2792,7 @@ direct_fill_rect32(video_adapter_t *adp, int val, int x, int y, int cx, int cy) /* the line may cross the window boundary */ if (offset + cx > banksize) { ++bank; /* next bank */ - (*vidsw[adp->va_index]->set_win_org)(adp, bank*banksize); + vidd_set_win_org(adp, bank*banksize); end = offset + cx - banksize; filll_io(val, adp->va_window, end/sizeof(u_int32_t)); } |