diff options
author | jkim <jkim@FreeBSD.org> | 2010-03-29 20:12:44 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2010-03-29 20:12:44 +0000 |
commit | 54bd4e6ce967d675bdc3b023c04131e41b12f62a (patch) | |
tree | 3badc0a9d9b513ab041c53d2352a3f8943a099fc | |
parent | a00cb190bf7744ce1f7e0774ca6908f41fb3d90d (diff) | |
download | FreeBSD-src-54bd4e6ce967d675bdc3b023c04131e41b12f62a.zip FreeBSD-src-54bd4e6ce967d675bdc3b023c04131e41b12f62a.tar.gz |
Print memory model of the video mode except for planar memory model.
'P', 'D', 'C', 'H', 'V' mean packed pixel, direct color, CGA, Hercules,
VGA X memory models respectively where they have fixed number of planes.
-rw-r--r-- | usr.sbin/vidcontrol/vidcontrol.c | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/usr.sbin/vidcontrol/vidcontrol.c b/usr.sbin/vidcontrol/vidcontrol.c index 06afe53..48580f1 100644 --- a/usr.sbin/vidcontrol/vidcontrol.c +++ b/usr.sbin/vidcontrol/vidcontrol.c @@ -950,10 +950,11 @@ show_adapter_info(void) static void show_mode_info(void) { - struct video_info _info; char buf[80]; - int mode; + struct video_info _info; int c; + int mm; + int mode; printf(" mode# flags type size " "font window linear buffer\n"); @@ -972,9 +973,35 @@ show_mode_info(void) if (_info.vi_flags & V_INFO_GRAPHICS) { c = 'G'; - snprintf(buf, sizeof(buf), "%dx%dx%d %d", - _info.vi_width, _info.vi_height, - _info.vi_depth, _info.vi_planes); + if (_info.vi_mem_model == V_INFO_MM_PLANAR) + snprintf(buf, sizeof(buf), "%dx%dx%d %d", + _info.vi_width, _info.vi_height, + _info.vi_depth, _info.vi_planes); + else { + switch (_info.vi_mem_model) { + case V_INFO_MM_PACKED: + mm = 'P'; + break; + case V_INFO_MM_DIRECT: + mm = 'D'; + break; + case V_INFO_MM_CGA: + mm = 'C'; + break; + case V_INFO_MM_HGC: + mm = 'H'; + break; + case V_INFO_MM_VGAX: + mm = 'V'; + break; + default: + mm = ' '; + break; + } + snprintf(buf, sizeof(buf), "%dx%dx%d %c", + _info.vi_width, _info.vi_height, + _info.vi_depth, mm); + } } else { c = 'T'; |