Difference between revisions of "Mach64"

From ArchWiki
Jump to: navigation, search
m (Testing direct rendering)
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category: Graphics (English)]]
+
[[Category:Graphics]]
 +
[[Category:X Server]]
 
[http://en.wikipedia.org/wiki/ATI_Mach#Mach_64 The Mach 64 chip] is an old graphic accelerator developped by ATI. This board has basic 3D capabilites. Its support on Linux is poor but exists. This page is a walkthrough to setup Mach 64 graphics chipsets (including ATI Rage Pro) and obtain direct rendering on some of them.
 
[http://en.wikipedia.org/wiki/ATI_Mach#Mach_64 The Mach 64 chip] is an old graphic accelerator developped by ATI. This board has basic 3D capabilites. Its support on Linux is poor but exists. This page is a walkthrough to setup Mach 64 graphics chipsets (including ATI Rage Pro) and obtain direct rendering on some of them.
  
 
==Installing the basic features==
 
==Installing the basic features==
2D and Xv acceleration in X can be achieved with Arch's xf86-video-mach64:
+
2D and Xv acceleration in X can be achieved with xf86-video-mach64:
 
  # pacman -S xf86-video-mach64
 
  # pacman -S xf86-video-mach64
  
 
==3D acceleration and direct rendering==
 
==3D acceleration and direct rendering==
 
{{Warning | You may experience crashes if using the Mach 64 DRM module. Direct rendering on Mach 64 is not very reliable because it never got much support.}}
 
{{Warning | You may experience crashes if using the Mach 64 DRM module. Direct rendering on Mach 64 is not very reliable because it never got much support.}}
On Linux, the Mach 64 chip uses the DRI/DRM system for direct rendering. The DRI part is available in [extra], but a DRM module which is not included in the mainline kernel is also needed. So we have to build it separately. A package on the [[AUR]] simplifies this task: {{Package AUR|mach64drm}}.
+
On Linux, the Mach 64 chip uses the DRI/DRM system for direct rendering. The DRI part is available in [community], but the DRM module is not included in the mainline kernel. So we have to build it separately. A package in the [[AUR]] simplifies this task: {{AUR|mach64drm}}.
  
As soon the DRM module is built and installed, make sure you installed the DRI part:
+
As soon as the DRM module is built and installed, make sure you installed the DRI part:
 
  # pacman -S mach64-dri
 
  # pacman -S mach64-dri
  
 
==Configuration==
 
==Configuration==
Here is an example of X configuration for a Mach 64 chip (not mandatory):
+
Here is an example of X configuration for a Mach 64 chip (may not be mandatory in all cases):
  
 
  Section "Device"
 
  Section "Device"
Line 26: Line 27:
 
         Option "BufferSize" "2"
 
         Option "BufferSize" "2"
 
         Option "LocalTextures" "true"
 
         Option "LocalTextures" "true"
 +
        # Uncomment the following option if X segfaults as soon as anything using acceleration is called.
 +
        # Option "ExaNoComposite" "true"
 +
        # The following line will also prevent segmentation faults, but is not recommended since
 +
        # it will disable all acceleration.
 +
        # Option "NoAccel" "true"
 +
        # The following enables the shadow framebuffer, which improves non-accelerated performance.
 +
        # Use only with the "NoAccel" option.
 +
        # Option "ShadowFB" "true"
 
  EndSection
 
  EndSection
  
Line 37: Line 46:
 
*LocalTextures: boolean, by default, AGP cards will only use AGP memory for textures. To force using local card memory for textures in addition to AGP, you may set this option to true.
 
*LocalTextures: boolean, by default, AGP cards will only use AGP memory for textures. To force using local card memory for textures in addition to AGP, you may set this option to true.
 
The AgpSize option changes the amount of system memory used for the AGP aperture and is not limited by the size of the card's on-board video memory. This memory is used for the DMA buffers BufferSize option), and the remainder is allocated for AGP textures. Of course, the AgpMode/AgpSize options are ignored for PCI cards or if ForcePCIMode is enabled on an AGP card. However, the BufferSize option can be used to change the size of the DMA buffers in system memory for both PCI and AGP cards (but it's not recommended to reduce the buffer size unless you are short on system RAM).
 
The AgpSize option changes the amount of system memory used for the AGP aperture and is not limited by the size of the card's on-board video memory. This memory is used for the DMA buffers BufferSize option), and the remainder is allocated for AGP textures. Of course, the AgpMode/AgpSize options are ignored for PCI cards or if ForcePCIMode is enabled on an AGP card. However, the BufferSize option can be used to change the size of the DMA buffers in system memory for both PCI and AGP cards (but it's not recommended to reduce the buffer size unless you are short on system RAM).
 +
*ExaNoComposite - Required to prevent segmentation faults in EXA handler.
  
 
The Modules Section:
 
The Modules Section:

Revision as of 05:21, 28 January 2013

The Mach 64 chip is an old graphic accelerator developped by ATI. This board has basic 3D capabilites. Its support on Linux is poor but exists. This page is a walkthrough to setup Mach 64 graphics chipsets (including ATI Rage Pro) and obtain direct rendering on some of them.

Installing the basic features

2D and Xv acceleration in X can be achieved with xf86-video-mach64:

# pacman -S xf86-video-mach64

3D acceleration and direct rendering

Warning: You may experience crashes if using the Mach 64 DRM module. Direct rendering on Mach 64 is not very reliable because it never got much support.

On Linux, the Mach 64 chip uses the DRI/DRM system for direct rendering. The DRI part is available in [community], but the DRM module is not included in the mainline kernel. So we have to build it separately. A package in the AUR simplifies this task: mach64drmAUR.

As soon as the DRM module is built and installed, make sure you installed the DRI part:

# pacman -S mach64-dri

Configuration

Here is an example of X configuration for a Mach 64 chip (may not be mandatory in all cases):

Section "Device"
       Identifier  "Card0"
       Driver      "mach64"
       Card        "ATI Rage Pro - Mach64"
       Option "DMAMode" "async"
       Option "ForcePCIMode" "false"
       Option "AgpMode" "2"
       Option "AgpSize" "32"
       Option "BufferSize" "2"
       Option "LocalTextures" "true"
       # Uncomment the following option if X segfaults as soon as anything using acceleration is called.
       # Option "ExaNoComposite" "true"
       # The following line will also prevent segmentation faults, but is not recommended since
       # it will disable all acceleration.
       # Option "NoAccel" "true"
       # The following enables the shadow framebuffer, which improves non-accelerated performance.
       # Use only with the "NoAccel" option.
       # Option "ShadowFB" "true"
EndSection

Details:

  • Driver: most important, allows you to use the mach64 driver.
  • DMAMode: async - default, sync (synchronous DMA), mmio (PIO/MMIO) - Dispatch Buffers.
  • ForcePCIMode: boolean, disables AGP aperture. Set to True if you have a PCI card.
  • AgpMode (AGP 1x or 2x): 1 or 2. If not set, defaults to agpgart's mode.
  • AgpSize: sets the AGP aperture in MB - The video card can access this amount of system memory using AGP and shared access in order to expand its memory capacity - enlarging this allows more textures to be stored here.
  • BufferSize: sets DMA buffer memory size in MB. Default is 2 MB. May be 1 or 2.
  • LocalTextures: boolean, by default, AGP cards will only use AGP memory for textures. To force using local card memory for textures in addition to AGP, you may set this option to true.

The AgpSize option changes the amount of system memory used for the AGP aperture and is not limited by the size of the card's on-board video memory. This memory is used for the DMA buffers BufferSize option), and the remainder is allocated for AGP textures. Of course, the AgpMode/AgpSize options are ignored for PCI cards or if ForcePCIMode is enabled on an AGP card. However, the BufferSize option can be used to change the size of the DMA buffers in system memory for both PCI and AGP cards (but it's not recommended to reduce the buffer size unless you are short on system RAM).

  • ExaNoComposite - Required to prevent segmentation faults in EXA handler.

The Modules Section:

Section "Module"
       <Your modules>
       Load  "glx"
       Load  "dri"
EndSection

The DRI Section:

Section "DRI"
       Mode 0666 #allows anybody to use DRI
EndSection

The DRI Section (For machines where security is a concern):

Section "DRI"
       Group "video" #change to any desired group to restrict access
       Mode 0660
EndSection

Testing direct rendering

Restart X. After you are in X, you can run the command:

$ glxinfo | egrep "direct rendering|OpenGL renderer"

This should return something like this:

Direct rendering: Yes
OpenGL renderer string: Mesa DRI Mach64 [Rage Pro] 20051019 AGP 2x x86/MMX/SSE

If OpenGL renderer string says "Software Rasterizer", DRI is not working, even if direct rendering says "yes".