Contribute  :  Web Resources  :  Site Statistics  :  About  :  RSS  
    Bart's Soapbox talk about technology and politics    

Graphics cards on FreeBSD


*BSDA comparison of graphics cards on FreeBSD
Unlike many reviews and comparisons out there, this article will barely look at the hardware, and mostly at drivers and their performance

I looked at graphics hardware from ATI, Nvidia and Matrox for this. Only hardware for which there are drivers that support OpenGL acceleration are considered. The test case is being able to play Quake 3 engine based games and Doom 3, in all cases the Linux versions are used. Also, a test is done with the native version of QuakeWorld, mostly to get an insight in compatibility.

The hardware:

  • Nvidia GeForce MX440, 64MB
  • ATI Radeon 9200SE, 128MB
  • Matrox MGA550, 64MB

I also took a peek the Radeon 9600 and Matrox P650 based cards, but both are unsupported at least for accelerated 3d.

First the MX440 from Nvidia.

This is a slightly older chipset, and was mostly chosen because it compares better to the other cards in the test. More recent cards will give better performance with the same level of compatibility since all are supported by the same driver.

The binary drivers from Nvidia were used on FreeBSD 5.3 (local build, roughly equivalent to beta 7). Installation was without any problems (I used the port, which does most of the work and is rather clear about how to do the remaining part yourself)

First of all, the cons of this setup.

  • Picture quality. This is a hardware issue, at higher resolutions, the Nvidia produces noticable shadowing and has other modulation related problems. Those affect picture quality at higher resolutions (1280x1024 and up) that can eb rather annoying.
  • Binary driver. We have seen enough trouble with this untill the most recent version of the driver, it took quite a bit of work to get it to work properly with 5.x. That said, Nvidia seems to take this idea of supporting FreeBSD seriously, and their newest drivers fix this problem quite well.
  • Software compatibility. For some odd reason, the quakeworld client can't load its console driver for as logn as the nvidia driver is loaded, regardless of if I use the glx version of the client. Other native FreeBSD software doesn't seem to have such problems, alltho glxgears seems to not be too happy either and crashes at times. No such odd behavior was noticed with any Linux applications tho and it seems that this is also the one thing that Nvidia is focussed on.

The good sides of this option:

  • PERFORMANCE. Plain and simple. This is purely a driver issue since hardware-wise this card is definitely not the fastest of the 3. It did prompt me to do an additional test, stick the card in a pIII 500 machine, and guess what, OpenGL performance was still better then the Radeon 9200 in an Athlon XP 2600+ with the open source dri driver.
  • Compatibility with Linux software. Achievable for the other cards (using the graphics/linux_dri port) but a lot easier with the nvidia driver.

Conclusion, if you are into serious desktop work and need high resolutions, this is not the card for you. If you run at 1024x768 (or lower) and/or require high performance for 3d graphics, then there is simply no alternative.

The Radeon 9200SE

First of all, the cons:

  • Performance for 3d graphics is not good. It is good enough to run a screensaver or a game of Quake2/3 on a modern machine, but anythign beyond that is out of the question. Even my personal favorite, Enemy Territory, is barely playable on an Athlon XP 2600+ (compare, it is playabvle on the pIII 500 with the MX440)
  • Better drivers are available for Linux, but not for other open source platforms, and porting those is problematic for license and technical issues

So.. anything good to say about this card? Definitely!

  • Pcture quality. This is by far the biggest advantage of this card. Its picture quality is simply as close to perfect as it gets, regardless of resolution.
  • Compatibility. The drivers are not fast, but they are rather complete and accurate. The result is that everything that should run with it indeed works, and the drivers don't interfer with other things in any noticable way.

As noted I also looked at the Radeon 9600, but no accelerated 3d drivers are available on FreeBSD for this card. It works well for 2d graphics and has the same outstanding picture quality

The Matrox cards

The G550 is showing its age hardware-wise, but so is the MX440 so I think the comparison is fair. Besides, the MX440 is a budget chipset, the G550 isn't really.

At any rate, the accelerated 3d drivers from Xorg/XFree86 and dri work well on this card. Performance doesn't come close to that of the MX440 with the binary drivers from nvidia, but iit easily surpasses the Radeon 9200SE. Enemy Territory is playable on the Athlon XP machine, and almost playable on the pIII machine.

Matrox doesn't seem interested in anything other then Windows and Redhat Linux, which results in newer cards not working well with any other platforms. Hence, the P650 is back to its owner and deemed a nice but unusable piece of hardware for me.

Generally spoken, the G550 with the open source dri based drivers does what I expected from it, and performs somewhere in between the 2 others.

In picture quality it does well, but doesn't surpass the ATI card.

Conclusion: Why should I still bother with Matrox? Their cards offer no advantage over the competition in any noticable way other then being average in everything (or not good enough for anything in my opinion). If what you need is decent picture quality with somewhat decent 3d performance, this card is your friend, but you do have to find one first for a decent price.

Overall conclusion:

For gaming and high performance 3d graphics, there is no alternative for an nvidia card. Even a low-end card will offer very good performance.

When 2d graphics and video are your thing, go with ATI, you will get the best possible picture, and very good software compatibility. OpenGL is mostly usable for old games and a screensaver.

The Matrox card is good for nothing, or average for everything, depending on how you look at it.

The huge performance differences seem to be purely a matter of drivers, and this is the area where nvidia really does better then all others, both in multi-platform support and in how well the drivers work.

What's Related

Story Options

Graphics cards on FreeBSD | 5 comments | Create New Account
The following comments are owned by whomever posted them. This site is not responsible for what they say.
Graphics cards on FreeBSD
Authored by: tinca on Saturday, November 13 2004 @ 10:54 AM CET
Dear Bart,

I found your evalution while searching the web for a clue as to how to setup my Radeon 9200 in order to make use of hardwer acceleration (OpenGL). I was unsuccessfull doing this, most likely because of no support. From /sys/i386/conf/NOTES:
# radeondrm: ATI Radeon up to 9000/9100
at least as of FreeBSD 5.3b7. After loading appropriate modules and enabling GLX/DRI in the otherwise properly functioning X config all I got is a black screen some color splashes on its top quarter.
My card is:
scanpci -vv
ATI Technologies Inc Radeon RV280 [Radeon 9200]
(Sapphire Radeon 9200 Atlantis product)

Could share your procedure of setup with me?
Thank you!
Relevant bits of config for the Radeon 9200
Authored by: bart on Monday, November 15 2004 @ 11:01 PM CET
Sure, first of all, setting up the drm kernel part.
Make sure you have agp support enabled (agp_load="YES" in /boot/loader.conf or included in the kernel. You can not load this module after boot)

Then, build the modules:
cd /usr/src/sys/modules/drm
make install
kldload radeon.ko

You should get a console message similar to:

drm0: <ATI Radeon RV280 9200 SE> port 0xc800-0xc8ff mem 0xdfef0000-0xdfefffff,0xd0000000-0xd7ffffff irq 11 at device 0.0 on pci1
info: [drm] AGP at 0xe0000000 64MB
info: [drm] Initialized radeon 1.11.0 20020828 on minor 0
pci1: <display> at device 0.1 (no driver attached)

The modules section for X includes dri, glx and GLcore

Then, the device section for the video card includes
Driver "radeon"
VendorName "ATI"
BoardName "Radeon 9200"
Option "AGPMode" "4"
Chipset "ATI Radeon 9200 5964 (AGP)"

This config works for me on 5.3 release (and before that various betas, rc1 and rc2) and 6.0 current.

glxinfo output:

bart@arnor:~$ glxinfo
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_EXT_import_context, GLX_SGI_make_current_read, GLX_SGIS_multisample
client glx vendor string: SGI
client glx version string: 1.2
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
GLX_MESA_swap_control, GLX_MESA_swap_frame_usage, GLX_OML_swap_method,
GLX_OML_sync_control, GLX_SGI_make_current_read, GLX_SGI_swap_control,
GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
GLX extensions:
GLX_ARB_get_proc_address, GLX_EXT_import_context, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_MESA_allocate_memory, GLX_MESA_swap_control,
GLX_MESA_swap_frame_usage, GLX_SGI_video_sync
OpenGL vendor string: Tungsten Graphics, Inc.
OpenGL renderer string: Mesa DRI R200 20030328 AGP 4x x86/MMX+/3DNow!+/SSE TCL
OpenGL version string: 1.3 Mesa 5.0.2
OpenGL extensions:
GL_ARB_imaging, GL_ARB_multisample, GL_ARB_multitexture,
GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_dot3,
GL_ARB_texture_mirrored_repeat, GL_ARB_transpose_matrix,
GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
GL_EXT_clip_volume_hint, GL_EXT_compiled_vertex_array, GL_EXT_convolution,
GL_EXT_copy_texture, GL_EXT_draw_range_elements, GL_EXT_histogram,
GL_EXT_packed_pixels, GL_EXT_polygon_offset, GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_specular_color,
GL_EXT_stencil_wrap, GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_object,
GL_EXT_texture_lod_bias, GL_EXT_vertex_array, GL_APPLE_packed_pixels,
GL_ATI_texture_env_combine3, GL_ATI_texture_mirror_once,
GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat,
GL_MESA_pack_invert, GL_MESA_ycbcr_texture, GL_MESA_window_pos,
GL_NV_blend_square, GL_NV_texture_rectangle, GL_NV_texgen_reflection,
GL_SGI_color_matrix, GL_SGI_color_table, GL_SGIS_generate_mipmap,
GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,
glu version: 1.3
glu extensions:
GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess

visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
0x23 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x24 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x25 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 Slow
0x26 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow
0x27 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x28 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x29 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 Slow
0x2a 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow
0x2b 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x2c 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x2d 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 Slow
0x2e 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow
0x2f 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x30 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x31 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 Slow
0x32 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow

Graphics cards on FreeBSD
Authored by: bart on Monday, November 22 2004 @ 06:41 PM CET
I installed Linux on the test machine to take a look at ATI's binary linux drivers, the result of which was a bit of a dissapointment.

First, the performance.
For 'simple' OpenGL stuff (ie, glxgears and the like), the drivers from ATI perform better then the open source dri drivers. Performance increase is anywhere between 30 and 200%.
While this is a substantial increase, it is by far not as fast as the older NVIDIA 440 MX still.

The bigger issue is compatibility. X server crashes, complete hangup of the machine etc. when tryign to use more advanced OpenGL based software, no way to play ENemy Territory for example.

ALso, XVideo support doesn't seem to work with the ATI binary drivers, making video playback extremely slow and cpu intensive.

So... back to the dri drivers. SLower, but at least they work properly.
Graphics cards on FreeBSD
Authored by: Anonymous on Saturday, March 19 2005 @ 10:11 AM CET
This should be told to all gamers, don't buy nforce boards for non ms oses. Under FreeBSD there is no 3d on the nforce. Get a via or amd chipset.
Update: FreeBSD 6.0
Authored by: bart on Tuesday, August 09 2005 @ 02:08 PM CEST
The DRI support for Radeon cards has seen quite an upgrade in performance on FreeBSD 6.0

With 'simple' OpenGL programs (xgrears and the like) a 40% or better increase in framerate is not unusual.

In itself this would make the Radeon 9000/9200 a decent choice for a FreeBSD desktop system that needs decent OpenGL performance and puts those cards a lot more on par with the lower end Gforce 4 cards .

However, Linux versions of Enemy Territory, Quake III Arena as well as Doom III seem to cause a locking problem in the kernel, causing X to get stuck in Giant indefinitely. I just setup a debug kernel with all the extra checks enabled to see if I can get some more information on this, at any rate, gaming does not seem to be an option, and this might extend to running Linux OpenGL apps not being an option right now.

The NVIDIA drivers seem to work without problems on FreeBSD 6.0
 Copyright © 2016 Bart's Soapbox
 All trademarks and copyrights on this page are owned by their respective owners.
Powered By Geeklog 
Created this page in 0.21 seconds 
Powered by Apache Powered by FreeBSD