text:
Aros/Platforms/x86 support

Google translation into German, French, Dutch, Italian, Spanish, Hindi, Chinese Simplified, Polish, Russian,

AROS should run on almost any i386 PC hardware so long as the CPU is newer than an i486, and has a "Floating Point Unit (FPU)". Ideally around 700Mhz and above with at least 256MB of memory is recommended for desktops and around 1GHz and at least 256MB for laptops/notebooks/netbooks. For web browsing, etc above 1GB is usually needed and offers the option to run web browsers, media players and other hard disk heavy usage from RAM: disk.

Most hardware support covers the period between 2000 and 2010

Motherboards supported
 * Most Intel mobos are supported (Skt 775 is ok but newer is better) - additional pci / pci-e cards may be needed for networking, audio, etc
 * AMD based socket 939 am2 am2+ am3+, fusion and am4 ryzen based systems work but additional pci / pci-e cards may be needed

Motherboard support gets diminished after 2010 due to the introduction of SATA/AHCI (mobos) and UEFI (mobos and disks) and further with USB3 from 2014 onwards

Supported graphics cards (gfx)
 * Nvidia 2D and 3D 2005-2011. Nouveau supports 2D from TNT through to fermi gtx5xx and 3D acceleration fx5xxx to gtx4xx. It's worth noting however that support isn't guaranteed. Nor will potential power of a card reflect its performance under AROS.
 * Intel 2D and 3D 2006-2009. 2D for many old netbooks and motherboards. 3D for many early netbooks and motherboards
 * AMD/ATI 2D only and no 3D. Desktop ie external monitor support only (ie no laptop internal support) for very early Radeon 7000 through to x600. Experimental 2D version for up to HD3xxx came later
 * VESA 2D fallback modes for all graphic cards (GPUs) and with screen dragging.

Sound wise there are

 * HDaudio support for onboard intel and AMD netbooks, ultrabooks, notebooks and motherboards (2005 to 2014)
 * some AC97 codec support for very old motherboards and laptops (ie pre 2004)

 * PCI and some PCI-E C-Media CMI8738 for desktop plugin cards
 * PCI Creative Soundblaster EMU10K1 cards SBLive
 * PCI semi professional some early VIA Envy24 desktop sound cards
 * PCI Sound Blaster 128 aka SB16

Supported network which could be desktop, laptop, etc
 * PCI-E Realtek rtl8169 which also includes the rtl8111 and rtl8110
 * PCI Realtek rtl8139 and includes rtl8101 and rtl8100
 * PCI intel pro100
 * Broadcom 44xx 10/100 integrated in laptops around 2005
 * VIA 10/100
 * 3com Etherlink 10/100
 * Realtek rtl8029 10mbit

Wireless wifi
 * atheros 5000 wireless

It is very hard to recommend a completely supported motherboard because as soon as newer motherboards arrive so their features change subtly, often introducing non supported parts like ethernet and audio. It is a moving target.

 * mini-itx motherboard will only get you 1 pci or pci-e slot
 * micro mATX or uATX will have more, typically 2 pci-e or pci slots which helps if any onboard features are not supported.
 * full atx will have more slots available

N.B It is frustrating when a piece of hardware is not supported. Hardware documentation can run to over 100 pages and a lot of hardware do not have any public documentation anyway. Chips from different manufacturers for sound, graphics, SATA, etc. vary just as much, unless they follow a standard such as HDAudio codecs, AHCI etc.

Coding drivers is a far cry from Hello World programs or even a port of existing software. If you do actually want to try then get a hold of documentation on the relevant hardware and start there. Alternatively you could try to find some BSD, MIT or MPL licence drivers as a point of reference. Please, do not think you can just adapt strings in a driver for different strings, it does not work that way. You will need to start from scratch for each new bit of hardware. Device driver programming require embedded skills, like manipulation of bits within registers, good debugging skills, dealing with interrupts, lots of patience, etc.

The following specific chipsets and drivers are also available - use Tools/PCITool to confirm Vendor and Product IDs - Please let us know any mistakes or any information to be added, to this General Chat list on AROS World

x86 Native Environment

 * Brief Timeline

 * 2000-12-06 HIDD first mouse.hidd completed (Michal Schulz)
 * 2001-03-31 BOOT first boot from floppy disk with IDE device
 * 2001-10-30 BOOT first cd bootable version
 * 2002-01-27 HIDD first pci.hidd added (Michal Schulz)
 * 2002-04-13 BOOT software HDToolBox added
 * 2003-04-03 HIDD vesa2.hidd graphic modes added
 * 2004-03-08 HIDD new pci and ata (pata) devices worked on (Michal Schulz)
 * 2004-03-17 HIDD nVidia 2D driver appears (Michal Schulz)
 * 2005-01-05 AHI  AHI v6 audio system ported (Martin Blom)
 * 2005-01-06 AHI  SBLive SoundBlaster Live driver ported (Georg Steger)
 * 2005-02-04 AHI  AC97 playback only driver added (Michal Schulz)
 * 2005-06-27 NIC  amiTCP stack ported with 3com, NE2000, prism2 drivers (Neil Cafferkey)
 * 2005-08-25 NIC  nForce2 support added (Michal Schulz)
 * 2005-12-24 NIC  Intel Pro100 network driver added (Neil Cafferkey)
 * 2006-03-25 HIDD ATI radeon 2D driver added (Michal Schulz)
 * 2007-03-06 HIDD vesa 1.0 video driver added (Pavel Fedin)
 * 2007-03-08 HIDD dospackets and FAT filesystem (Rob Norris)
 * 2007-03-21 HIDD usb initial commit (Michal Schulz)

 * 2007-10-01 BOOT Installer added (Neil Cafferkey)
 * 2007-11-29 PORT 64bit x86 added  (Michal Schulz)
 * 2008-04-12 BOOT GRUB2 added (Alain Greppin and Nick Andrews)
 * 2008-08-26 NIC  RTL8139 added (Nick Andrews)
 * 2008-10-22 PORT to SAM440ep (ppc) (Michal Schulz)
 * 2009-02-25 PORT to efika (ppc) (Michal Schulz)
 * 2009-05-18 HIDD poseidon usb2.0 stack ported to AROS (Chris Hodges)
 * 2009-11-18 NIC  RTL8169 network driver arrived (Nick Andrews and Franck Charlet)
 * 2009-12-23 AHI  HDAudio based Atom CPU and netbook audio driver arrived (Davy Wentzler)
 * 2010-03-09 BOOT USB pendrive stick booting available (Neil Cafferkey)
 * 2010-05-26 HIDD Intel GMA900 2D graphics card support (Michal Schulz)
 * 2010-09-03 NIC  Wireless PCI based NIC arrived (Neil Cafferkey)
 * 2011-04-30 HIDD Nvidia 2D and 3D nouveau graphics card support (Deadwood)
 * 2011-08-30 HIDD Radeon 2D enhanced AMD driver arrives (Bearsoft)
 * 2011-09-17 NIC  Wireless USB realtek arrives (Neil Cafferkey)
 * 2011-12-09 HIDD Intel 945G 3D Gallium graphics support (Sami)

 * 2013-02-25 AHI  AC97 VIA 686 audio support (Davy Wentzler and Neil Cafferkey)
 * 2013-03-31 PORT early Raspberry PI native support (Nik Andrews)
 * 2014-01-16 AHI  Envy24 audio chipset support (Davy Wentzler and Neil Cafferkey)
 * 2017-02-17 PORT Symmetric MultiProcessing smp added for x86 64bit (Michal Schulz)
 * 2018-10-20 PORT Big Endian ARM
 * 2021-11-26 NIC  Broadcom 44xx ethernet (Neil Cafferkey)
 * 2023-01-12 NIC  Nivida MCP61 ethernet (Neil Cafferkey)

Audio Chipsets
'''If sound beeps in AHI prefs after Music set then some support is there. Select more than one channel for multiple audio streams, set frequency up to 44 kHz or higher and set the volume if not already set. Ensure you set the music unit 0 to 3 which allows the extra features of the audio card like microphone, line-out, etc).'''

1996-2000 sb128.audio aka SB16 PCI

 * 2021 5.27

as per CREATIVE's website, the model number is the first two digits on the front and first two digits on the back. my card says CT4810 and 161TK110B 995; this translates to CT4816 as the model.

The original AudioPCI 3000 card with the ES1370 had a master clock crystal for 44.1 kHz (22.5792 MHz), used an AKM codec (AK4531, non-AC97) and had 4 channel output; Creative later modified the design with a crystal for 48 kHz (24.576 MHz) and Sigmatel AC97 codec (a CT4700 SB128 with a CT5507 chip, AK4531, 22.5792 MHz crystal and TDA7360 speaker power amp). The issue with these cards involved never quite eliminate the effects of resampling on the 64V, it also shows signs of undersized coupling caps. These Ensoniq cards automatically engaged headphone amplifier (with a 4565 opamp).

Porting involved 40897, 40898 configure, 40900 bugs, 40901 further bugs, 40913 memory IO fixes, 40914 irq fix.

Revision 0x04 = ES1371 REV_ES1373_A Revision 0x06 = ES1371 REV_ES1373_B

Revision 0x07 = ES1371 REV_CT5880_A Revision 0x02 = CT5880 REV_CT5880_C Revision 0x03 = CT5880 REV_CT5880_D Revision 0x04 = CT5880 REV_CT5880_E

Revision 0x09 = ES1371 REV_ES1371_B Revision 0x00 = EV1938 REV_EV1938_A Revision 0x08 = ES1371 REV_ES1373_8

1999-2001 via-ac97.audio

 * 2021 5.10

1998-2003 emu10kx.audio - Creative Labs SoundBlaster Live! and Audigy

 * 2021 6.5

the green jack is for the main speaker pair AND headphones, so manual switching will be required If your card is wired for the "AC97" standard, then it's up to your headphone jack to switch the green speaker output in and out the headphone jack has Normally-closed contacts that will open on insertion, which breaks the signal path back to the sound card (FP_RETURN)

2000-2010 cmi8738.audio - C-Media

 * 2021 5.20

 * Read more and imported on 20th July 2011 and alsa docs.

2001-2005 ac97.audio

 * 6.4 27-12-2008

The AC97 chips were designed to be pinout interchangeable so that the sound support could change easily and quickly without motherboard redesigns

the green jack is for the main speaker pair AND headphones, so manual switching will be required If your card is wired for the "AC97" standard, then it's up to your headphone jack to switch the green speaker output in and out, the headphone jack has Normally-closed contacts that will open on insertion, which breaks the signal path back to the sound card (FP_RETURN)

The ProductID and VendorID are for the audio controller only - the important additional codec is NOT so easily identified.

2005-20xx HDAUDIO.audio

 * 6.34 2019 AROS One 1.5 upwards
 * 6.29 2018
 * 6.27 2017 update
 * 6.25 2014 used for most Icaros 2.x
 * 6.20 July 2012
 * 6.17 Nov 2011
 * 6.15 Jun 2011
 * 6.13 Sep 2010

Using Prefs/AHI ensure you set the music unit and at least Units 0 (where most audio comes from) in top left drop down menu to HDaudio - HIFI in the section below. Set Units 1 or 2 to microphone or other outputs. Plus allow more than one channel for multiple audio streams and set frequency up to 44 kHz or higher on the right hand side of the ahi prefs. If sound beeps when you press the test button then all should be OK.

Output <- Codec <- Audio Controller (HDA) <-> Computer

codecs and exact hardware identifier. As mentioned above, HDA is only part of the work here, it gets the audio out of the main chipset in digital format (on a bus called I2S). This is not enough, there is another step needed which is routing that I2S signal to the output, converting it to actual audio, amplifying it, etc. This is handled by a separate chip called a "codec". Sometimes it is initialized by the BIOS, but this is not always the case.

Most audio drivers are made up of two parts a Controller + a Codec. The ProductID and VendorID are for the audio controller only - the important additional codec is NOT so easily identified.

Some newer versions of codecs are missing at the moment.

Things to try if sound not working

 * try to connect something to the audio jack, maybe it is not playing on internal speakers or vice versa
 * make sure you try and select all music units e.g. unit0, unit1....
 * even if PCI ID's are in Prefs/Env-Archive/HDaudio.config, this doesn't mean it is working, it is the codec that matters
 * it might be internally muted

add debug=memory to grub boot line - continue booting with F10 Open a shell Tools/Debug/Bifteck > RAM:audio.txt

or

Open a shell Tools/Debug/Sashimi > RAM:audio.txt Run ahi prefs Click test tone button Stop sashimi with Ctrl-C

If the boot sound is enabled, you have to use Bifteck to capture AHI debug output. In the GRUB menu, press E on your selected entry, then add "debug=memory" to the options (alongside ATA=, vesa= etc.). Then F10 or Ctrl-X to boot. Once booted, run Tools/Debug/Bifteck again.

or

 * try adding QUERYD to the start of ENVARC:hdaudio.config file (also known as Prefs/Env-Archive/) ie. on the first line
 * OR try removing QUERY and QUERYD from the start of the hdaudio.config file
 * Reboot
 * open a shell
 * type: sys:tools/debug/sashimi > ram:debug.txt
 * open ahi prefs
 * select one of the audio modes - HIFI or otherwise
 * press the 'test sound' button
 * press ctrl-c in the shell
 * post the results to Aros-World

The HD Audio standard was designed to be hardware pinout interchangeable so that the sound support could change easily and quickly. HDA is a standard around particular chips. Each kind of chip has a certain number of DACs and pins, and even the same chip could be hooked up in different ways on different motherboards. The chips are programmable and the operating system can adjust how things are routed. Some pins aren’t even hooked up, so it makes no sense to route sound to them. Also some pins have sensors that can tell when something is plugged in, so that for example the speakers in a laptop can be muted when headphones are plugged in. Pins are also grouped, so for example all the outputs for a 5.1 sound system are grouped. Generally the HDA driver in the operating system is supposed to read the pin set up and figure out a reasonable way to set things up, and disconnected pins should be ignored, etc.

HDAudio standard has headphones on a separate DAC, and it's up to the driver.. it can even send different audio to the headphones without interrupting the main (green) outputs

Envy24 series
A little history. VIA bought the ICE created Envy chipsets VT1712 first. A few years later, they created several cheaper variants VT1724 (mixer missing), VT1721 (low end cut down), VT1720 (embedded on motherboard) and lastly the VT1723 (no support apart from Windows Envy24DT like SYBA SD-PEX63034).

There are PCI Express versions appearing.

The Envy24 is the base product that was originally designed by ICEnsemble, and it supports multi-channel hardware mixing, which is great for professional use. The HT version removes the hardware mixer (unimportant for non-professional uses). The HT-S version is almost exactly the same as the HT, it just uses cheaper DACs. The PT version is exactly the same as the HT-S version, it is just the edition used for on-board audio on motherboards.

N.B. PCI slot identification and 3.3v PCI.

Graphic GFX Chipsets
HDMI, DVI and DisplayPort monitors have a native resolution of 480p, 720p, 1080i, 1080p and up

 * HDMI 1.2 720p res.
 * HDMI 1.3 1080 resolution
 * HDMI 1.4 above 1080 res.
 * HDMI 2.0
 * HDMI 2.1

The fallback for most graphics modes is vesa if any native support does not work

2D tests performed with gfxbench in the shell type gfxbench > out.txt (40 seconds blank screen is part of the test), via FreeDoom via limit-removing engine like odamex, chocolate or vanilla doom -timedemo demo1 or doom2 -timedemo demo1, doom.exe -iwad doom2 -file mymap.wad, Duke DNRATE 640x480 windowed

3D tests performed with Demos/Mesa/, Cube 1080p, Cube 2 windowed not fullscreen 1920 x 1025, Quake3 ~ cl_drawFPS 1, Xonotic , test gl,

AGP works but faster transfers through the AGP slot are only available on a few supported motherboard chipsets
 * Faster AGP Working = SIS 650 board, Intel 865pe AGP slot on MSI 6788-050,
 * Not Supported = NForce2 chipsets, most Intel 815/820 chipsets, VIA chipsets, ALi chipsets,

Intel GMA
DVI output is not supported at the moment.

If having problems:

 * Ensure the latest version is being used.
 * Set GMA_MEM to 128 or 256 to test
 * Try the FORCEGMA ToolType for 2D, and try the FORCEGALLIUM ToolType for 3D acceleration after 2D is verified to work. ToolTypes should be applied to the Devs/Monitors/IntelGMA monitor icon.

If still having problems:

 * At GRUB boot screen edit boot line and add option: debug=memory
 * Boot.
 * Use shell command: tools/debug/bifteck > RAM:debug.txt
 * And post [GMA MONITOR DETECTION] and other related debug lines

nouveau.hidd (nvidia pci, agp, pci-e desktop)

 * Desktop, more likely hit rather than miss on very early nvidia (but not on old VIA motherboard chipsets i.e. pre 2010)
 * Laptop, limited support for very early non-optimus (i.e. just Nvidia only so no Intel/nvidia combinations)

Please note that the nouveau project is reverse engineering a graphics driver due to nVidia's limited information and design decisions (closed firmware)

 * 2011-10 - DEVS 6.11 Nouveau.hidd  7.4 Gallium.hidd  9.4 Softpipe - LIBS  2.3 Gallium  1.3 GLU  19.0 Mesa OpenCL 1.x
 * 2011-04 - DEVS 5.31 Nouveau.hidd  7.3 Gallium.hidd  9.3 Softpipe - LIBS  2.2 Gallium  1.1 GLU  18.0 Mesa OpenCL n/a

Nouveau support for AROS is limited to OpenGL 2.1 compliance even for modern GL4 capable GPUs - OpenCL supports the older NV50 (8000 9000) cards, less support in newer NVC0 cards (300 upwards)

ADoom3 graphic details ultra, benchmark while playing press the "`" key and type "Timedemo demo1" in the console

Nouveau development and actual benchmark speed tests are a lot slower than the rival AMD radeon support in 2D and 3D

On linux, Customers with NVIDIA Turing and NVIDIA Ampere Architecture GPUs can choose which modules to install. Pre-Turing (pre hardware raytrace) customers will continue to run the closed source modules. There's hope that might make it to other OSs

nouveau mobile integrated
If you purchased a notebook with an NVidia sticker on it, most of the time you have a optimus based one, ie Intel CPU melded with Nvidia GPU, Optimus was slated at one point to go into desktop PCs but the industry ended up rejecting that concept

Without something like Bumblebeehere or PRIME in AROS, most optimus laptops will default to Intel graphics

 * http://www.bumblebee-project.org/
 * https://github.com/Bumblebee-Project/Bumblebee/wiki/
 * https://github.com/Bumblebee-Project/Bumblebee/
 * https://github.com/Bumblebee-Project/bbswitch
 * https://github.com/amonakov/primus
 * https://github.com/gsgatlin/optimus-rpms

radeon.hidd
Michel Shultz 2D desktop driver (standard on most distributions) and bearsofts updated 2013 around Icaros 1.3.1

3D is not implemented by AROS but could cover these AMD chipsets

 * r300g - 9600 to X1900 - llvm not needed - r300 software driver deprecated and doubtful very useful
 * r600g Evergreen - HD 2xxx to 6xxx - llvm not necessarily needed and can use swrast - r600 software driver deprecated
 * SI - HD 7xxx and up - faster llvmpipe required (extra bounty??)
 * AMDGPU Vulkan GCN 3rd gen (GCN 1.2)

AMDGPU Vulkan
fyi if a notebooks with two graphic cards, the integrated Intel card (id 0x7d) for low power usage and a discrete Radeon card (id 0x56) which should be used for GPU-intensive applications. By default the Intel card is always used

Gallium Radeon HD is not ported yet but is really big and complex so another solution may have to be found like vulkan where support starts from very recent ISA GCN islands HD7000s cards only

What we could see in the future but not in AROS yet...
 * 2013 was a big year for the r600g gallium3d radeon driver with uvd (hardware h.264 video decoding) support via VDPAU in April and Dynamic Power Management added in July for 4000 to 7000
 * 2014 bug fixing for r600g
 * 2015 radeonSI support improved

 * Vulkan
 * Gallium

Vulkan software renderer allows to prepares the infrastructure for hardware rendering. Primary difference between software and hardware renderer is output to regular RAM vs GPU RAM, the rest is almost the same. It is possible to render to GPU RAM offscreen.

bare bones basics data flow

application,>>> api/opengl/vulkan>>>>, jit compiler, >>>>memory manger, >>>>gpu hardware

so you need to have a compiler that takes your api call/program/shaders/drawing commands and turns them into a program the gpu can render.

the vulkan to amd gpu compiler for shaders and textures is nearly os agnostic iirc as long as you have solid posix compliance

Unlike OpenGL, Vulkan do not depend on windowing system and it have driver add-on system with standardized API (Mesa also have OpenGL driver add-ons, but it have non-standard Mesa-specific API). OpenGL may need more work for windowing system related code at this point but developing Vulkan on real hardware is more strategic than developing OpenGL, since now Zink 3 running on Vulkan compensates for the lack of OpenGL support by giving performance similar to native accelerated OpenGL

RadeonGfx use client-server model with client-server thread pairs. For each client thread that calls 3D acceleration API, server side thread is created. If client thread terminates, server side thread also exit.

GeForce RTX 2070 Radeon RX 7600 Quadro RTX 5000 Radeon PRO W6600 GeForce RTX 2060 12GB Radeon PRO W7500 Quadro GP100 Radeon RX 6800S GeForce RTX 3070 Laptop GPU GeForce GTX 1080 GeForce RTX 3060 8GB Quadro RTX 4000 Radeon Pro W5700 Radeon RX 6600 GeForce RTX 2080 (Mobile) Radeon RX 7700S Radeon RX 6700S Radeon RX 6600S Quadro RTX 5000 (Mobile) GeForce GTX 1070 Ti GeForce RTX 4050 Laptop GPU Radeon Pro Vega 64X Radeon RX 5700 Radeon RX Vega 64 GeForce RTX 2060 GeForce RTX 2070 Super with Max-Q Design

Radeon RX 6600M GeForce GTX 1070 Radeon RX 6650M GeForce RTX 3060 Laptop GPU Radeon RX Vega 56 Radeon RX 6700M GeForce RTX 2080 with Max-Q Design Radeon RX 6800M GeForce GTX 980 Ti Radeon R9 Fury GeForce GTX 980 Quadro M5500 Radeon R9 390X Radeon RX 580 Radeon RX 5500 Radeon RX 6550M GeForce GTX 1660 Ti with Max-Q Design GeForce GTX 780 Ti GeForce GTX 970 Radeon R9 290X Radeon RX 480 Radeon RX 5600M Quadro RTX 3000 with Max-Q Design Radeon R9 290X / 390X Ryzen 5 4600HS with Radeon Graphics Radeon R9 290 Radeon Pro 5500 XT Radeon R9 M490 * GeForce GTX 780 Radeon RX 6500M Quadro M5500 GeForce GTX 1060 with Max-Q Design Radeon RX 6500 Radeon RX 5300 Intel Arc A770M GeForce GTX 1650 Ti Radeon Pro 580X Radeon RX 6400 GeForce RTX 2050 Ryzen 9 4900HS with Radeon Graphics Radeon Ryzen 9 6900HS GeForce GTX 980M Quadro M5000M Radeon RX 6300 GeForce GTX 1650 Ti with Max-Q Design Radeon Pro 570 Ryzen 9 6900HS with Radeon Graphics GeForce GTX 1050 Ti Quadro M4000M Radeon R9 280X 380X Radeon R9 380 GeForce GTX 1650 with Max-Q Design GeForce MX570 Radeon R9 280X Radeon R9 380 Radeon 780M GeForce GTX 960 GeForce GTX 970M Quadro M4000M * GeForce GTX 680

Radeon RX 6500M Quadro M5500 Radeon Pro WX 7100 GeForce GTX 1060 with Max-Q Design GeForce GTX 1650 Intel Arc A730M Radeon HD 7970 Radeon R9 M395X Radeon R9 M485X Radeon R9 M480 * Radeon R9 M295X Radeon R9 M390X * FirePro W7170M * Radeon R9 M395 Radeon R7 370 Radeon RX 5500M GeForce GTX 590 GeForce GTX 880M GeForce GTX 950 Radeon R9 270X GeForce GTX 660 Ti GeForce GTX 760 GeForce GTX 780M Quadro K5100M GeForce GTX 680MX Radeon HD 7870 GeForce GTX 965M Quadro M3000M * GeForce GTX 870M Radeon R9 M290X Radeon HD 8970M Radeon Ryzen 7 7735U (680M), Radeon Ryzen 7 7735HS (680M 12C) GeForce GTX 580 Radeon HD 6970 GeForce GTX 1050 GeForce GTX 680M GeForce GTX 775M GeForce GTX 1630 FirePro M6100 Radeon HD 7970M Radeon R9 M390 * GeForce GTX 750 Ti

GeForce GTX 570 GeForce GTX 480 GeForce GTX 960M Quadro M2000M * Quadro K5000M Quadro K4100M GeForce GTX 770M GeForce GTX 860M GeForce GTX 675MX GeForce GTX 950M GeForce GTX 850M Quadro M1000M Radeon R9 M280X Radeon HD 7950M * GeForce GTX 560 Ti Radeon HD 6870 GeForce GTX 470

GeForce GT 1030 GeForce MX330 Ryzen 5 PRO 5650GE with Radeon Graphics Ryzen 7 5800HS FirePro 3D V8800 GeForce MX250 Radeon Pro WX 3200 Ryzen 7 PRO 5750G with Radeon Graphics Radeon Ryzen 5 5600H Ryzen 5 Pro 4650G with Radeon Graphics Radeon Ryzen 7 5800U Ryzen 7 7730U with Radeon Graphics Radeon Ryzen 7 5825U Radeon Pro WX 4150 Radeon Ryzen 5 PRO 4655G Ryzen 5 4600G with Radeon Graphics Radeon Ryzen 5 PRO 4655GE GeForce GTX 485M FirePro W6150M Ryzen 7 5800U with Radeon Graphics Ryzen 5 7530U with Radeon Graphics Ryzen 7 4800U with Radeon Graphics Radeon R9 M470 Ryzen 3 PRO 5350G with Radeon Graphics Radeon RX Vega Ryzen 3 5300U Ryzen 7 5825U with Radeon Graphics Ryzen 5 PRO 4400G with Radeon Graphics Radeon Ryzen 7 PRO 4750GE Radeon Ryzen 7 4800U FirePro V7900 Radeon HD 5970 Radeon Ryzen 7 7700X 8-Core Radeon Ryzen 5 PRO 5650G Radeon Ryzen 5 4400G Radeon Ryzen 5 PRO 5650GE Radeon RX 550X FirePro V8800 Radeon RX Vega Ryzen 5 5500U GeForce MX150 Quadro K3100M Ryzen 7 PRO 5850U with Radeon Graphics Radeon HD 6970M Radeon R7 250X Intel HD 5600 Ryzen 3 4300GE with Radeon Graphics GeForce GTX 460 Ryzen 7 5700U with Radeon Graphics Radeon Ryzen 5 7530U Quadro K620 Ryzen 3 PRO 5350GE with Radeon Graphics Intel Iris Pro P580 Intel UHD Graphics P630 Ryzen 5 4600H with Radeon Graphics Ryzen 5 PRO 7530U with Radeon Graphics Radeon HD 5870 Radeon HD 6870 Ryzen 7 4700G with Radeon Graphics Ryzen 5 5600U with Radeon Graphics Radeon HD 7770 Ryzen 3 Pro 4350G with Radeon Graphics Radeon Ryzen 5 5625U GeForce GTX 745 Radeon Ryzen 7 4850U Mobile Radeon Ryzen 3 PRO 7330U Quadro M600M Radeon Ryzen 5 5500U Ryzen 5 5560U with Radeon Graphics Ryzen 7 4800H with Radeon Graphics

GeForce 945M Ryzen 5 PRO 4650GE with Radeon Graphics FirePro M5100 Radeon Ryzen 5 5600U Radeon Ryzen 5 PRO 4500U GeForce GTX 580M Ryzen 7 PRO 5875U with Radeon Graphics Ryzen 3 5300GE with Radeon Graphics Radeon R9 M385 Quadro 5000M Radeon Ryzen 7 4700U Ryzen 5 PRO 5650U with Radeon Graphics Radeon Ryzen 7 PRO 4750U Ryzen 7 4700U with Radeon Graphics Ryzen 7 PRO 4750U with Radeon Graphics FirePro V7800 Radeon R9 350 Ryzen 3 4300G with Radeon Graphics Radeon Vega 11 Ryzen 5 PRO 3350G Radeon Ryzen 5 5560U GeForce GTX 460 SE Radeon Pro W5500M Radeon Vega 11 Ryzen 5 PRO 3400G Ryzen 5 5500U with Radeon Graphics Ryzen 5 PRO 4500U with Radeon Graphics GeForce GT 645 GeForce GTX 765M Radeon R9 M385X Ryzen 5 5625U with Radeon Graphics Ryzen 3 PRO 7330U with Radeon Graphics Radeon HD 5850 Radeon Vega 11 Ryzen 5 PRO 2400G Intel Iris Pro 580 Radeon HD 6850 Intel Iris Xe MAX Radeon Ryzen 7 PRO 5875U Radeon Ryzen 5 7600 6-Core GeForce GTX 470M Ryzen 3 5300G with Radeon Graphics GeForce GTX 670MX Radeon RX 640 Qualcomm Adreno Gen 3 Radeon R7 450 GeForce GTX 675M Radeon Pro WX 4130 Intel Iris Xe MAX 100 Quadro 5000 Radeon RX 570X Radeon HD 7700-serie Ryzen 5 4600U with Radeon Graphics Ryzen 3 PRO 4350GE with Radeon Graphics Radeon Vega 8

GeForce MX230 GeForce GTX 765M Quadro K4000M Iris Pro Graphics P580 * Iris Pro Graphics 580 * GeForce GTX 645 Quadro M520 GeForce GTX 570M GeForce MX130 Radeon RX 540 Radeon Ryzen 5 PRO 5675U Intel UHD Graphics 770 Radeon RX Vega 11 Ryzen 7 3750H Radeon Vega 11 Ryzen 5 PRO 3400GE Radeon HD 5850 GeForce GTX 675M GeForce GTX 580M Radeon HD 6990M Radeon R9 M385X * Radeon R9 M470X * Radeon R9 M470 * Radeon R9 M385 * Radeon R9 M380 * Radeon R9 M370X Radeon R9 M275 Radeon HD 7770 GeForce GTX 485M GeForce GTX 460 768MB Radeon HD 6790 GeForce GTX 285M SLI Quadro K3100M FirePro W5170M * GeForce GTX 670MX Quadro 5010M GeForce GTX 760M GeForce GTX 670M

GeForce 940MX * Maxwell GPU (940M, GDDR5) FirePro M8900 Radeon HD 6970M Radeon R9 M270 Radeon HD 8870M Radeon HD 7870M Quadro K3000M GeForce GTX 570M FirePro M6000 FirePro M5100 Quadro K2100M Radeon HD 5770 GeForce GTX 550 Ti GeForce GTX 280M SLI Radeon HD 6950M Radeon R7 250 GeForce GT 755M GeForce GTX 660M GeForce 845M Radeon HD 8850M Radeon R9 M365X Radeon R9 M265X Ryzen 5 PRO 4400GE with Radeon Graphics FirePro W5130M * Radeon Vega 8 Ryzen 5 3500U Radeon Vega 6 Ryzen 3 3300U Radeon HD 7850M Radeon HD 8790M FirePro W4170M FirePro W4190M FirePro W4100 Quadro 4000M GeForce GTX 470M GeForce GTX 480M GeForce GT 750M Iris Pro Graphics 6200 Quadro K1100M GeForce 940M Radeon R9 M375 GeForce 930MX * Radeon R7 M380 * Radeon R7 M370 Quadro M600M * GeForce GT 650M Quadro K620M GeForce 840M Radeon R7 M275DX GeForce GT 745M Radeon HD 7770M GeForce GTX 560M Radeon R7 512 Cores (Kaveri Desktop) Radeon R7 384 Cores (Kaveri Desktop) Radeon R7 (Carrizo) * Iris Pro Graphics 5200 GeForce GT 740M GeForce 930M Radeon HD 4850

Iris Graphics 550 * GeForce 830M Iris Graphics 540 Quadro M500M * Quadro K2000M GeForce GTS 450 GeForce GTX 260M SLI GeForce GT 735M Mobility Radeon HD 5870 GeForce 825M Quadro 5000M FirePro M4000 FirePro M7820 Radeon HD 6870M GeForce 9800M GTX SLI Radeon HD 8830M * Radeon HD 8770M Radeon R7 M260X GeForce GTX 460M GeForce 920MX * GeForce GT 730M Radeon HD 7750M GeForce GT 645M * FirePro M4100 Radeon HD 8750M Radeon R6 A10-9600P 4C+6G Quadro 3000M Radeon R7 M270 Radeon R7 M265 Quadro FX 3800M GeForce GTX 285M Mobility Radeon HD 4870 GeForce GT 640M Radeon R7 (Kaveri) Radeon R8 M365DX Radeon R7 M460 * Radeon HD 7730M Radeon R7 M360 GeForce GTX 280M Radeon HD 8690M Quadro FX 3700M Radeon R7 M340 GeForce 920M Radeon R6 M340DX HD Graphics 530 HD Graphics P530 Tegra X1 Maxwell GPU Radeon R7 M260 Radeon R6 (Carrizo)

Mobility Radeon HD 4860 FirePro M7740 Mobility Radeon HD 4850 GeForce GTX 260M GeForce 9800M GTX Quadro FX 2800M Radeon HD 8670D Radeon HD 7690M XT FirePro M5950 GeForce GT 640M LE Radeon R6 (Kaveri) Radeon HD 8650M * Radeon HD 8730M Radeon HD 6770M GeForce GT 635M GeForce GT 555M Radeon R7 A10 PRO-7800B Radeon HD 5670 Mobility Radeon HD 5850 Radeon HD 6850M Quadro 2000M GeForce 9800M GT GeForce 8800M GTX Quadro FX 3600M GeForce GT 445M GeForce GTS 360M

GeForce GT 240 Radeon R7 PRO A10-9700 Radeon HD 7690M HD Graphics 5600 Radeon HD 8570D Radeon HD 8670M Radeon R6 M255DX Radeon HD 7660D Radeon HD 6750M Quadro K1000M GeForce GT 550M Radeon HD 8590M * GeForce GTS 260M GeForce GTS 160M GeForce 9800M GTS GeForce GT 430 Radeon HD 6830M Mobility Radeon HD 5830 Radeon HD 6730M * GeForce 9800M GS Mobility Radeon HD 4830 Mobility Radeon HD 5770 Radeon HD 6570M Radeon HD 8650G Radeon HD 7670M GeForce GT 630M Radeon HD 7560D GeForce GTS 150M * Radeon R5 M335 Radeon R5 M430 * Radeon R5 M330 Radeon R5 M255 Radeon Vega 3 Quadro 1000M GeForce 820M FirePro W2100 HD Graphics 520 620 Iris Graphics 6100

GeForce GT 720M GeForce 8800M GTS Radeon R5 M240 Radeon R5 M320 * Radeon R5 M230 Radeon R5 M315 * Mobility Radeon HD 5750 * Radeon HD 8570M Radeon R7 PRO A10-8850B HD Graphics 6000 Quadro K610M Radeon HD 8550M Iris Graphics 5100 GeForce GT 540M Mali-T880 MP12 * Radeon HD 8610G * Radeon HD 6650M HD Graphics 4600 Mobility Radeon HD 5730 HD Graphics 5500

Radeon R5 (Carrizo) * Radeon R5 (Kaveri) FirePro M5800 NVS 5400M GeForce 710M Radeon HD 7660G GeForce GT 435M HD Graphics 5000 Quadro K510M * Radeon HD 5570 Radeon HD 6550M Radeon HD 7590M * GeForce GTS 350M GeForce GTS 250M Radeon HD 6630M Radeon HD 7650M FirePro M2000 Radeon HD 7570M Radeon HD 7630M Quadro FX 1800M Mobility Radeon HD 5650 Radeon HD 8510G * Radeon HD 6530M Radeon HD 8550G Quadro K500M * GeForce GT 625M * GeForce GT 620M GeForce GT 525M Radeon HD 6550D * Radeon HD 7610M Radeon HD 7620G Radeon HD 8470D Radeon HD 7640G Adreno 530 GeForce ULP K1 (Tegra K1 Kepler GPU) HD Graphics 4400 HD Graphics 510 515 *

NVS 5200M Mobility Radeon HD 565v Radeon HD 7550M Mobility Radeon HD 4670 GeForce GT 425M GeForce 9700M GTS Radeon HD 6645G2 * Quadro FX 2700M GeForce GT 335M Radeon HD 7600G Mobility Radeon HD 3870 Mobility Radeon HD 4650 GeForce GT 220 GeForce GT 420M Radeon HD 7530M * Mobility Radeon HD 3850 GeForce GT 330M Quadro FX 880M Quadro NVS 5100M GeForce GT 240M Radeon HD 7490M * HD Graphics 5300 Radeon HD 7510M * GeForce Go 7950 GTX Quadro FX 3500M GeForce 8700M GT SLI GeForce 9700M GT GeForce GT 230M Mobility Radeon HD 550v Radeon HD 7480D HD Graphics 4000 Mali-T760 MP8 Radeon HD 6620G HD Graphics (Broadwell) * Adreno 430 Radeon R5 (Beema/Carrizo-L) Radeon R4 (Beema) (Kaveri) HD Graphics (Skylake) *

Radeon HD 6450 GDDR5 Radeon HD 7500G Radeon HD 8450G Radeon HD 7470M Radeon HD 6490M Radeon HD 8400 Mali-T880 MP4 GeForce GT 520MX Radeon HD 7520G GeForce GT 325M GeForce Go 7800 GTX SLI GeForce 8600M GT SLI GeForce Go 7900 GS SLI GeForce GT 130M NVS 4200M GeForce Go 7900 GTX Quadro FX 2500M Radeon HD 8350G Radeon HD 8330 GeForce 9650M GS GeForce 9650M GT Radeon R3 (Mullins/Beema) GeForce 8700M GT Quadro FX 1700M Quadro FX 1600M GeForce Go 7800 GTX GeForce Go 7900 GS Quadro NVS 320M Quadro FX 1500M GeForce 9600M GT GeForce GT 220M Quadro FX 770M GeForce GT 120M Radeon HD 7450M GeForce 610M GeForce 705M Mali-T760 MP6 Radeon HD 6470M FirePro M3900 * GeForce GT 520M Radeon HD 7420G Mobility Radeon HD 3670 Mobility FireGL V5725 PowerVR GX6450 Adreno 420 HD Graphics (Haswell)

Radeon HD 6520G Radeon HD 8310G * GeForce 320M GeForce GT 320M Mobility Radeon HD 2600 XT Mobility Radeon X1900 Mobility Radeon X1800XT Mobility Radeon X1800 GeForce Go 6800 Ultra GeForce Go 7800 GeForce 9600M GS GeForce 9500M GS Radeon HD 7400G Radeon HD 6480G * Mobility Radeon HD 2700 GeForce GT 415M GeForce 410M Radeon HD 7370M Adreno 418 HD Graphics (Cherry Trail) Radeon HD 6370M Radeon HD 8280 Mobility Radeon HD 5470 Radeon HD 6450M Radeon HD 7430M * Mobility Radeon HD 3650 Mobility FireGL V5700 Mobility Radeon HD 5145 Mobility Radeon HD 545v Radeon R6 (Mullins) * Radeon HD 8240 Radeon HD 8250 Mobility Radeon HD 4570 Quadro FX 570M Mobility Radeon HD 5450 * Radeon R2 (Mullins/Beema) * GeForce 8600M GT Mobility Radeon HD 2600 HD Graphics 3000 Quadro FX 380M GeForce 310M GeForce G210M NVS 3100M GeForce 405M GeForce 315M GeForce Go 7600 GT GeForce 9500M G GeForce 8600M GS NVS 2100M GeForce Go 7700 GeForce Go 6800 Quadro FX Go 1400 Mobility Radeon X800XT Radeon HD 6430M * Radeon HD 6380G * Mobility Radeon HD 5430 Radeon HD 8210 Mobility Radeon HD 540v Mobility Radeon HD 4550 HD Graphics 2500 HD Graphics (Ivy Bridge)

Quadro NVS 310 Radeon HD 7350M * Radeon HD 6350M * Mobility Radeon HD 4530 Mobility Radeon HD 4350 Radeon HD 4350 GeForce 305M Mobility Radeon X1700 Mobility FireGL V5250 Mobility Radeon X2500 GeForce Go 7600 Quadro NVS 300M Mobility Radeon X800 Mobility Radeon X1600 Mobility FireGL V5200 Mobility Radeon 9800 GeForce Go 6600 Mobility Radeon X1450 Mobility Radeon X700 Mobility FireGL V5000 GeForce G 110M Quadro NVS 295 Radeon HD 6330M * Mobility Radeon HD 4330 GeForce 8400M GT Quadro NVS 140M HD Graphics 2000 GeForce 9500M GE * GeForce 9400M (G) / ION (LE) HD Graphics (Sandy Bridge) *

Adreno 330 PowerVR G6430 PowerVR GX6250 PowerVR G6400 HD Graphics (Bay Trail) Mali-T628 MP6 Mali-T760 MP4 Chrome9HD * Radeon HD 7340 Radeon HD 6320 * Radeon HD 7310 Radeon HD 6310 * Radeon HD 8180 Mobility Radeon HD 3470 GeForce 9300M G ION 2 * GeForce 9300M GS Quadro FX 370M Quadro NVS 160M GeForce 9200M GS Mobility Radeon HD 3450 Mobility Radeon HD 3430 Mobility Radeon HD 3410 Mobility Radeon HD 2400 XT Radeon HD 4270 Radeon HD 4250 Radeon HD 7290 * Radeon HD 6290 * Radeon HD 4200 Graphics Media Accelerator (GMA) HD Graphics Radeon HD 6250 Quadro NVS 150M Quadro FX 360M Mobility Radeon X1350 Mobility Radeon X1400 GeForce 9100M G GeForce 8400M GS Quadro NVS 135M Mobility Radeon HD 2400 Radeon HD 3200 Radeon HD 4225 * Radeon HD 4100 * SGX554MP4 Mali-T628 MP4 Mobility Radeon HD 3400 * Radeon HD 3100 GeForce 8400M G Mali-T860 MP2 Quadro NVS 130M GeForce 8200M G Graphics Media Accelerator (GMA) 4700MHD Graphics Media Accelerator (GMA) 4500MHD Graphics Media Accelerator (GMA) 4500M Mali-T604 MP4 GeForce Go 7400 Quadro FX 350M Quadro NVS 120M GeForce Go 7300 GeForce Tegra 4 * PowerVR G6200 Adreno 405 * Quadro NVS 110M Mobility Radeon X600 Mobility FireGL V3200 Mobility FireGL V3100 Mobility Radeon HD X2300 Mobility Radeon 9700

Mobility FireGL T2e Mobility Radeon X1300 GeForce4 4200 Go Mobility Radeon 9600 Mobility FireGL T2 Mobility Radeon 9550 GeForce Go 7200 GeForce Go 6400 Mobility Radeon X300 GeForce Go 6250 GeForce Go 6200 GeForce FX Go 5700 Quadro FX Go 1000 GeForce FX Go 5600 / 5650 Radeon Xpress X1270 Radeon Xpress X1250 Radeon Xpress X1200 Graphics Media Accelerator (GMA) X3100 Mali-T624 Adreno 320 * Mali-T760 MP2 Mali-T720 MP4 Mali-450 MP4 Graphics Media Accelerator (GMA) 3650 * GeForce 7190M * GeForce 7150M Radeon Xpress 1150 GeForce Go 6150 GeForce Go 6100 GeForce 7000M Graphics Media Accelerator (GMA) 3600 * Mobility Radeon 9200 Mobility FireGL 9000 GeForce FX Go 5200 Mobility Radeon 9000 GeForce 4 488 Go GeForce 4 460 Go GeForce 4 440 Go GeForce 4 420 Go Graphics Media Accelerator (GMA) 3150 Graphics Media Accelerator (GMA) 950 SGX545 SGX544MP2 SGX543MP2 * Mali-T720 MP2 Mali-T720 Adreno 302 304 305 306 Mobility Radeon 7500 Mobility FireGL 7800 Graphics Media Accelerator (GMA) 900 Radeon Xpress 200M Radeon Xpress 1100 Mirage 3+ 672MX Mirage 3 671MX Mali-400 MP4 * GeForce ULP (Tegra 3) * VideoCore-IV * Adreno 220 225* Vivante GC1000+ Dual-Core Mali-400 MP2 * GeForce ULP (Tegra 2) * Graphics Media Accelerator (GMA) 600 * SGX540 * Graphics Media Accelerator (GMA) 500 Adreno 205 * Adreno 203 * GC800 * SGX535 SGX531 SGX530 Adreno 200 * Mali-200 * GeForce 3 Go * GeForce 2 Go 200 / 100 Mobility Radeon 9100 IGP Mobility Radeon 9000 IGP Mobility Radeon M7 Mobility Radeon M6 Chrome9 HC Extreme Graphics 2 Mobility Radeon 7000 IGP Radeon IGP 340M Radeon IGP 320M S3G UniChrome Pro II S3G UniChrome Pro Castle Rock Mirage 2 M760 Mirage M661FX S3 Graphics ProSavage8 Mobility 128 M3 SM502 *

Not supported

 * OpenGL4 with max 4.6 on AMDGPU RX 5000's / 6000s (RDNA might come to AROS) but Intel UHD, Iris Plus or Xe, Nvidia RTX (will not)
 * OpenGL3

Some support

 * OpenGL2 nvidia-nouveau,
 * OpenGL1 intel gma,

Kernel-space drivers like radeon (older AMD driver for older GPUs), amdgpu (newer driver for newer GPUs, allows using a few new features), i915, nouveau and a few others. They are what handles the gory details of talking to the GPU itself (writing to proper registers, handling its memory directly, configuring outputs, and so on). Unfortunately most of what they're exposing can be only consumed by a single user of that GPU, which is why we need...

DRM and DRI (Direct Rendering Manager/Infrastructure) controls access to the GPUs, provides interfaces for talking to the GPU concurrently by multiple apps at once (without them breaking each other) and lets the system perform the most basic tasks like setting proper resolution and such if no userspace apps understand how to talk to the GPU exposed. DRI and DRM expose the GPU interfaces mostly as-is, not in a "vendor-neutral" portable way - if you don't have an application developed specifically for a GPU you have, it won't work.

"let's create a vendor-neutral interface for graphics so that apps can ignore the GPU-specific bits and get right to the drawing!" - which is what OpenGL is. User-space drivers implement the OpenGL specification and expose it as an OpenGL library to apps (like games, browsers, etc) instead of the GPU. Mesa is the most popular collection of open-source user-space drivers and contains a few user-space drivers for different GPU families: radeonsi for most modern AMD GPUs (and r600g, r300g and others for older ones), i915/i965 for old/new Intel GPUs and nouveau for Nvidia GPUs.

There's also Gallium, which is a bunch of utilities and common code shared among these drivers - if certain things can be done once and work everywhere, they'll land in Gallium and benefit all the drivers. Most Mesa drivers use Gallium (radeonsi, nouveau, software renderers), some don't (intel).

Displaying 2D windows supports device-specific 2D drivers as well, but nowadays most of these are no longer needed as the modesetting can handle most hardware on its own. As the DRM/DRI got some additional interfaces for what used to be hardware-specific (setting resolutions, refresh rates, etc) and software requiring accelerated 2D drawing was optimized OpenGL-based renderers, dedicated 2D acceleration is slowly going away. Since around 2012, the 3D part of the graphics card deals with 2D operations.

Modern GPUs can also decode video!? There's VDPAU (NVIDIA & AMD GPUs) and VA-API (AMD & Intel GPUs) that can also talk to the GPU exposed via DRM/DRI and issue proper commands to decode/encode a given video stream. Those drivers are GPU-specific too.

So let's say you have some example GPUs, here's how example stacks could look like:

 * AMD Radeon HD8750: amdgpu -> DRM/DRI -> Mesa (radeonsi)

 * AMD Radeon HD4850: radeon kernel driver -> DRM/DRI -> Mesa (r600g, driver for older Radeon GPUs) -> games/apps/etc.

 * NVIDIA GeForce 460: nouveau kernel driver -> DRM/DRI -> Mesa (nouveau) -> games/apps.

 * Intel GMA950: i915 kernel driver -> DRM/DRI -> Mesa (i945) -> games/apps.

AMD driver name indicates the first generation of HW that the driver supports, since we generally don't know what the last generation will be at the time the driver is created, so:

 * r300 supports 3xx, 4xx, 5xx
 * r600 supports 6xx through NI
 * radeonsi supports SI, CI, VI and Polaris

Unless your computer uses a Firewire chipset manufactured by Texas Instruments, FireWire interfaces are likely to act buggy. AROS is unlikely to ever support FireWire.

Bluetooth is similarly unlikely to be ever supported due to huge cost to be certified.

No, x86 PCMCIA card.resource at the moment. Writing card.resource would be a similar amount of work to writing a typical driver. However, it might be complicated by having to support a variety of PCMCIA-controller chipsets like TI PCI1225, PCI1410, PCI1420, 1450, PCIxx12 and O2, etc. m68k card.resource does not really have many higher level functions, most functions are really simple or poke Gayle registers directly. only exception is CopyTuple. Amiga card.resource has one significant flaw: it's single-unit. would need card.resource and pccard.library. There was talk in the past of designing a new API for PCMCIA because card.resource only supports one slot, but since most modern laptops only have one slot anyway, I think it might be worthwhile to implement card.resource as-is (at least as a first step). pccard.library would be trivial to port. So, a new API is needed.

title: Aros/Platforms/x86 support


text:
Computers for Beginners/Buying A Computer

Selecting Basics
When you choose a computer, it is suggested to think about what you want to do with it. If all you plan to do is surf the web, send a few e-mails and perform basic business tasks, any new computer you find for sale will work well. Currently available computers have more than enough processing power for the tasks most people use. The more expensive models provide extra performance or software that you may or may not use. You can save a bundle by buying a refurbished or used computer from a big company or from a small, local reseller. Most people spend more than they need.

What you need to get is determined by what you plan to do with your computer. If you don't plan to play high end games, you don't need a $500 video card, a $1000 top of the line processor, and a $400 solid state drive. If you are typing letters to your grandkids there is no way you can type faster than even the slowest new computers. Consider what you plan to do, how much you want to spend and choose your computer from there.

There are a few choices you have to make, as described below:

Desktop v. Laptop
It comes down to a choice between size and price. Desktop computers (those which must remain stationary while in use) offer better value for money. They are usually cheaper and faster than laptops. Laptops, on the other hand, are easy to carry from place to place and can be set-up on any table or your lap.

Laptops offer mobility and are somewhat easier to start using since the set up process is typically limited to a single power cable compared to any number of cables required on a desktop. Of course once a desktop is set up, you typically do not need to mess with cabling again, while laptop owners must consistently keep track of a charging cable or dock.

If mobility is a must, or in other words you would like to be able to take your computer for serious use with you anywhere you go, consider spending extra to get a laptop. Consider if you would use your laptop for things you already can do on your smartphone if you have one. An important factor to consider with laptops is that, due to their mobility, you are more likely to put them in areas where they could be accidentally fall down or otherwise break - laptops are much harder to repair than desktops.

If you just plan to use your computer at your desk at home, save a few bucks and get a desktop. For computer gaming, desktops are generally considered greatly superior, as laptops manufacturers are forced to cram lots of hardware into a small chassis. Most laptops are oriented for business use.

The term "Netbook" refers to an increasingly common subgroup of laptops, small-sized devices which are approximately the size of a small book and so highly portable and easy to carry, able to connect to a network and make use of the Internet. In general, they are significantly less powerful than most computers, CPU wise even the average normal size laptop.

For an idea of how big the difference typically is, a laptop will generally cost 20-30% more than a comparable desktop.

Essentials and Extras
If you are buying a desktop, the desktop may come as a complete system, including a keyboard, mouse, and screen. In this case you do not need to make an additional purchase, aside from perhaps some AA batteries if the mouse and keyboard are wireless. However some desktops are sold as the computer only, and you will not be able to use them without buying a keyboard, mouse, and screen separately.

Laptops nearly universally include a screen, keyboard, speakers, and touchpad (Mouse). Some will go farther and include a microphone and webcam.

Some items are nice to have, but not required for the computer to operate. These include printers, scanners, and speakers. Items such as these are almost never sold in the same box as the computer. There are general office supplies you may wish to consider as well, such as a surge protector to plug everything into and a mousepad.

Service
If you are a first time computer user, it is worth considering if your purchase includes technical support, installation, or other benefits. Most computers by major manufacturers do come with a basic warranty and phone tech support included, so consider purchasing additional service only if you need additional assistance in person. Remember that many libraries and non profits have staff help with computer literacy.

Some salespeople can be very pushy, though some are genuinely helpful and will correctly point out missing required accessories. If you are unsure which applies in your case, consider asking a local techie for help.

Selecting Specs
Though not strictly needed, knowledge of computer specifications (specs) can help you make a more informed purchase.

Storage Drives
Storage drives are like big filing cabinets for your computer. Although they are all the same physical size (except in desktop v. laptop comparison), hard drives come in different capacities. When it comes to hard drives, bigger is better, within reason. Photos and videos often take up a large part of the space on our hard drives. You can always add an external drive or use cloud storage if you run out of space.

Most computers use solid state drives (Commonly abbreviated as SSD), though some computers use higher capacity but slower hard disk drives (Commonly abbreviated as HDD). Both are fine choices for beginners, though if all else is equal you should go with a solid state drive for their increased speed and reliability.

CPU (Processor)
The processor is the brains of the computer; it does all the calculating. Simply put, faster is better. However, faster is generally more expensive, produces more heat and uses more energy. Unless you plan on playing the latest games, or doing a lot of video editing, buy a middle of the pack processor. You can save some money by going with a slower processor, or spend a few extra for a little more speed. This book recommends that you stay away from the very high end as you spend a lot more money for only a small increase in performance. For instance, it is possible to buy a processor which adds $1,000 to the price of the chip for only about a 10% speed increase - Not worth it for the average or even most enthusiast users.

There are two main CPU manufacturers, Intel and AMD. Competition keeps them fairly evenly matched. Intel offers the high-end Core i7's and the low-end Core i3's processors while AMD has the high-end and mid-range Ryzen, and the low-range Athlon, respectively. The low-end processors (i3 and Athlon) tend to are still perfectly adequate for most basic computer use.

RAM (Memory)
RAM (Random Access Memory), is memory that is not on your hard drive that your computer uses to store things you have not saved, such as a web page, a document that you are typing, or as data from an application. RAM is much faster than a storage drive. As with most things computer-related, more is better. This book suggests getting a minimum of 4GB (gigabyte) - 8GB (gigabyte) of RAM. If you have a little extra money, you may want to go with 8GB or 16GB. Unless you are going to be doing lots of video editing, anything over that is a little excessive.

In any case, the amount of memory you will need will be dictated by the applications you will be using. For example, games or graphics-heavy applications such as Adobe Photoshop will demand considerably more RAM than text-based software such as email programs and word processors.

Operating System
Without instructions, a computer will do nothing. An Operating System is like a manager for your computer. You tell it what to do, and it in turn tells the computer components what to do. That way you only have to learn one general interface to make the most of your computer.

Fortunately most computers are shipped with an operating system ready to go. If you are feeling overwhelmed, you can generally ignore the specifics of this point. Just confirm with the salesperson that the operating system is the latest version available and you'll be set.

If you want to dig in deeper to decide which operating system is best for you, that's great! Microsoft Windows is a very common operating system, often seen both at home and in the office. Although Windows is the most popular operating system, this does not necessarily make it the best. One may also consider an Apple Macintosh system, which places focus on a better user interface, or Linux, which intends to be more free and privacy focused. As always, one should take a look at all available options, and choose the most useful interface.

Virus Protection
If you are new to using computers, virus protection is recommended. Most of them are paid products that require a subscription such as Norton or McAfee, but there are free products or with free personal licenses (non-commercial uses) like AVG, Malwarebytes or Avast!. Linux and Mac have not received too many recent viruses being small segments of the market (a smaller target), but it is still possible for them to be infected if you ignore their built in safety systems.

You, Yourself must be very careful on what you download. Until you become more technically savvy, you should avoid installing any program not from an official app store without a technically minded friend to guide you. The authors of malware prey on those without experience, as well as those who let their guard down. Be cautious and skeptical of things you find on the internet - bad malware can lock your computer up and demand a ransom, or worse.

Video Card
Computers aren't very useful if you can't see anything, unless you build a server or other form of distributed workstation. A video card allows the computer to 'talk to' the monitor.

 * If you only want to surf the web, write documents, send and receive email, then "integrated graphics" are fine and cost much less. Most low-end computers come with what is known as integrated graphics—very basic graphics built right into the motherboard, suitable for business applications.
 * If you plan to do serious gaming, you need a graphics card. There are two main companies who produce graphics card chipsets: AMD and Nvidia. Both make good graphics cards in all price and performance ranges and you should do more research before choosing a specific card. Basically, the more expensive cards allow you to play fancier games.  Video cards have their own onboard RAM and have their own processor known as a Graphics Processing Unit (or GPU).

Assembling

 * See also How To Assemble A Desktop PC

Building a computer is not as difficult as it sounds. It is not recommended for absolute beginners, but if you have toyed with computers for some time, it might be a good idea, especially if you plan on playing games. It can save you a bundle on hardware. There is a separate WikiBook on this, as well as some other resources online.

Компьютеры для начинающих/Покупка компьютера

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
SPM/Importing data from the scanner

=Copying your files from the scanner=

FTP
You will probably need an FTP program like SmartFTP (for Windows) or AxyFTP (for Linux) to connect to your scanner and download all the images that have been acquired.

Building your own DICOM archive
Instead of copying your files via FTP or CD/DVD, you may set up a DICOM server or connect to a PACS/RIS using free DICOM tools.

There are some free DICOM toolkits around from which you can build your own DICOM archive. An ancient, but very robust DICOM server can be found at ftp://ftp.erl.wustl.edu/pub/dicom/software/ctn/. The software is known to compile and run under both 32bit and 64bit Linux. Once you have set it up, you can configure your scanner console to send the images to this server using the scanner GUI.

=Reconstruction of functional images=

See with your physics team.

=DICOM conversion for structurals=

GUI
Go to Toolbox > DICOM

SCRIPT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % DICOM Conversion of structurals disp('Start of DICOM conversion for structurals'); dir_t1=sprintf('%s/mri/t1',dir_subject); dir_t1_analyze=sprintf('%s/mri/t1_analyze',dir_subject); disp(sprintf('    Source directory: %s',dir_t1)); disp(sprintf('    Target directory: %s',dir_t1_analyze)); % See if the structurals exist cd(dir_t1); dr=dir('*'); if isempty(dr) == false cd(dir_t1_analyze); P = spm_get('Files',dir_t1,'*'); hdr = spm_dicom_headers(P); spm_dicom_convert(hdr) else disp('No structurals to convert'); end

title: SPM/Importing data from the scanner


text: Template:SPM/Footer

title: Template:SPM/Footer


text: Category:Book:SPM

title: Category:Book:SPM


text:
Cookbook:Ume-shu (Japanese Plum Juice)

| Cuisine of Japan

Ume juice is extracted by preserving the fruits in sugar. It tastes sweet, smooth, and acidic, and is a refreshing drink, often enjoyed in the summer. The taste and aroma of ume-shu can appeal to even those people who normally dislike the taste of alcohol.

Ingredients

 * 1 kg raw Japanese ume plums
 * 1 kg rock sugar
 * Honey to taste
 * White liquor to taste

Equipment

 * A container (preferably a sealable glassware)

Procedure

 * 1) Wash plums and wipe dry.
 * 2) Cram plums tightly into container with rock sugar. Add liquor if using.
 * 3) Pour honey into container on top of ume.
 * 4) Seal container, and leave in a cool, dark place until the plums are shriveled and leathery.
 * 5) Remove fruit from container.
 * 6) To drink, dilute the plum liquid with two times as much water.

Notes, tips, and variations

 * Keep in a cool place during summer.

title: Cookbook:Ume-shu (Japanese Plum Juice)


text:
Cookbook:Japanese Pickled Plums (Umeboshi)

| Cuisine of Japan

Umeboshi (梅干, pickled Japanese plum) is a kind of pickled food. It's one of the Japanese traditional foods and it has been popular in Japan. It is red and round, and its taste ranges from sour to sweet. The texture can range from dry and crunchy to saturated and "globby", depending on the method used to preserve it.

Ingredients

 * Japanese plums
 * Red shiso
 * Salts

Procedure

 * 1) Sterilize a jar and utensils with potable alcohol or boiling water.
 * 2) Remove any damaged plums. Wash the remaining plums, and wipe them dry.
 * 3) Remove the plum stems.
 * 4) Cover plums with water and let stand overnight.
 * 5) Drain water and place plums in a larger, non-reactive container.
 * 6) Put salt and plums in the container. Turn them repeatedly and vigorously.
 * 7) Place a plate on top of plums. Place big, heavy rock or bottle filled with water on top of the plate to increase the pressuring done to the plums.
 * 8) Wait until the liquid increases in the jar—this will take two weeks or more.
 * 9) Weather the Japanese plums for 3 days and 3 nights of sunny day in high summer on flat baskets or any other flat instrument.
 * 10) Strain the liquid, and boil it to remove any impurities.
 * 11) Rub salt into the shiso to remove scum. Squeeze the shiso to remove liquid.
 * 12) Put the plums, shiso, and boiled liquid into the jar.


text:
Guitar/Buying a Guitar

A new guitar can be purchased for a moderate price. Modern manufacturing techniques coupled with mass production keeps costs low while intonation and playability are preserved by precise machining. Most manufacturers offer a full range of guitars from budget to custom-shop.

Acoustic or Electric
The first decision a buyer has to make is which type of guitar to purchase. After deciding this the buyer should research the models available within their price-range. Research avoids impulse buying and allows an informed decision to be made. It is recommended that a first guitar be bought from a guitar shop. Pawn-brokers and charity shops may offer second-hand guitars but all decisions fall upon the buyer who may not be experienced in spotting flaws or damage. Guitar shops will offer a range of new guitars from established manufacturers and a selection of second-hand guitars without faults. It is important that the buyer not be swayed from their informed choice on the day of purchase. If you know that you want to play electric guitar in a band then this is the correct type of guitar to purchase. It is not uncommon that when faced with a bewildering range of guitars in a shop a buyer may choose to purchase a different type of guitar other than their original choice. If at anytime a doubt arises whilst purchasing it is better to walk away and review your aims and buying options.

Singer-songwriters favour the steel-string acoustic guitar as the standard accompaniment for solo performance. The buyer should be aware that acoustic guitars have no internal pickups for amplification so a microphone must be placed in front of the sound-hole for recording. An electro-acoustic guitar is an acoustic guitar with pickups and a quarter inch jack output which allows the electro-acoustic guitar to be plugged into an amplifier. Note that thin-line guitars are not true acoustics and it is a common error that beginners raise the action in the belief that there is something wrong with their thin-line guitar which despite its obvious acoustic build has buzzing strings and produces a weak volume when played unplugged. Thin-line guitars are electric guitars with a body that imparts an acoustic resonance when amplified.

Testing a guitar

 * The height of the strings above the fretboard is called the action. If the action is too low the strings will buzz and if the action is too high more effort is required to push the strings down. Acoustic guitars have their action set by the factory and should not need further adjustment and therefore acoustics with a high action should be avoided since this may be a sign of faulty construction or a warped neck. You can test the action by playing barre chords at different positions. If the barre chords are difficult to play then the action may be set too high.

 * Intonation is a term used to describe accurate tuning over the range of the guitar which is three octaves. A guitar with its intonation set correctly ensures that an open C chord played on the first three frets sounds the same as a C barre chord played at the eighth fret. Guitarists use octaves to check intonation by striking an open string then fretting its twelfth fret octave equivalent. The open string and its octave should be in tune together with neither being sharp or flat in relation to the other. On all electric guitars the intonation can be adjusted at home by the player using an electronic guitar tuner but for acoustic guitars any adjustments must be made by a luthier since the nut and bridge need to be adjusted by filing and shaving. Guitar manufacturers ensure that the intonation is set at the factory and a further check is normally made by guitar dealers before a guitar is put on display. A second-hand guitar must be tested for intonation problems as sometimes a warped neck will render accurate intonation impossible though the guitar may sound in tune in the first position. Intonation depends on the straightness of the neck, whether the nut allows correct spacing and seating of the strings, the height of the bridge, and the scale of the frets. Intonation and tuning are two related but different concepts. Setting the intonation is about preparing the guitar so that it can be accurately tuned across its complete range.

 * The guitar should be played from its first to last fret on all strings to check for fret buzz and wolf notes. Fret buzz may be present when the truss rod is not properly adjusted or the action has been set too low. Worn fretboards or incorrectly shaped fret-wire can also cause fret buzz. Wolf notes sound dull and lack sustain and in some cases they can affect the tuning stability of a guitar. It is common to find a wolf note on the G string in the first position though they can occur anywhere on the neck where string contact to the fret is impeded or incorrect. The problematic wolf note can be corrected by sending the guitar to a luthier for setting-up and adjustment. The luthier will ask you which make of guitar strings you use and will adjust the guitar for that gauge. The guitar must be restrung every time with that particular string brand and gauge to preserve the set-up. Re-grooving nuts, adjusting necks and permanent bridge alterations are best left to a luthier whose traditional skills coupled with modern tools like the oscilloscope and precision calipers ensures a stable match between the strings and the guitar.

 * Look for misaligned screws on electric guitars as these may be a sign of wear or previous adjustments. On acoustic guitars glue spots may point to flaws though in most cases they are just residue that wasn't wiped off the guitar and generally don't affect the tone or playability. Loose switches on electric guitars are common and if dirt has accumulated then the familiar crackling of reduced contact will be heard when a pot or switch is moved. Pots, switches and wiring can be replaced so a good electric guitar with these problems should not be dismissed though the price should reflect the cost of replacing the damaged parts. Look down the sight of the neck to check for a warped neck and to ensure that the guitar strings are all at the same height. The thickness (gauge) of the low E string may not allow it to sit in the nut groove correctly and it may be slightly higher than the other strings. This may be a sign that you need thinner gauge strings or that the guitar needs to be set-up. Run your finger along the neck edges where the fret-wire ends. Fret-wire is tapped into a fretboard and then cut flush with the neck edge. As you run your finger along you should not feel any fret-wire protruding and this is an indication that the manufacturer has ensured a degree of quality control.

 * The intonation tuners located on the bridge of most electric guitars should be in a neat staggered row with the high E string intonation tuner nearest to the neck and the low E string intonation tuner furthest away from the neck. If testing a guitar you notice that the intonation tuners are not in a diagonal line from the high E to low E than this is a sign that someone has attempted to adjust the bridge and intonation tuners to set the action and has probably rendered the guitar unplayable. This is not a construction fault and the intonation tuners can be adjusted so that the guitar can be tuned correctly. It is common when you see misaligned intonation tuners that the bridge has also been raised to its highest position. The only time a bridge should be deliberately raised to its highest position is when a guitarist chooses to set-up a guitar permanently for use with a slide.

Buying a guitar that suits your playing style

 * Try as many different necks as you can until you find a guitar neck that you feel comfortable with. Gibson favours a flat wide neck and Fender a thinner neck. Some guitarists find that bending strings on a Gibson neck is more stable and precise due to the extra surface while others prefer the thinner neck of a Fender and the ease with which you can bend strings an octave or more. Try different necks until you find one that responds to your playing style.

 * The guitar should be comfortable to hold. Some guitarists like the heavier weight of Gibsons while others prefer the thinner and lighter bodies of Stratocasters. More important is the sound characteristics of a guitar. Telecasters are not as comfortable to hold as Stratocasters but many guitarists are drawn to their distinctive sound.
 * The majority of new guitars have a medium action either set at the factory or adjusted by the dealer. Lead guitarists sometimes prefer a very low action which sacrifices a small amount of tone for speed and ease. Slide guitarists will raise the action up to a height that renders normal fretting very difficult though this does ensure clarity of tone when using a metal or glass slide with alternative tunings. A medium action is ideal for a beginner as it maintains tuning stability while providing a clear tone.

 * Test as many models and price-ranges as you can. You should test guitars in the price range above your budget to familiarise yourself with the differences. Dealers are quite happy to give potential customers a long time to test different guitars without any sales pressure. Note that not all sales assistants are guitarists since a shop that sells both keyboards and guitars may prefer to hire a pianist to demonstrate their keyboard range. In this situation the buyer must rely on their own knowledge.

 * Do not be distracted. Testing guitars involves all the mental faculties. It is during these moments that a buyer may make a wrong decision. If at any time during testing you feel as though distractions are affecting your concentration then walk away and refocus.

Where to buy a guitar

 * Buying a guitar from a friend or relative who plays is an ideal way to avoid some of the common pitfalls of a first purchase. Relatives and friends may also help you search for a good guitar if they do not have one that they want to sell. It is recommended that the final choice should be made by the purchaser since guidance is never fool-proof.

 * A local guitar or music store that has an established reputation. Many guitarists return to the same local shop to buy strings and other extras though a larger dealer should be sought if the range of guitars offered by your local dealer is too small. Second-hand guitars need to tested thoroughly before purchasing. If the buyer is unsure of what faults to look for then a new guitar might be the better option.

title: Guitar/Buying a Guitar


text:
Cookbook:Burrito

| Cuisine of Mexico

A burrito is a flour tortilla filled with some filling. Generally, the filling includes meat such as pork, beef, or chicken, but also often includes beans and/or rice. Vegetarian burritos are also common.

Base

 * Large flour tortilla
 * Beans (optional)
 * Rice (optional)

Possible fillings

 * Pork
 * Ground or shredded beef
 * Ground or shredded chicken
 * Flaked fish
 * Shrimp
 * Chorizo
 * Refried beans
 * Seasoning (e.g. cumin, salt, oregano, black pepper, chilis, etc.)
 * Picadillo
 * Tomatoes
 * Black olives
 * Lettuce
 * Cilantro
 * Avocado
 * Onion, raw or sautéed
 * Garlic, raw or sautéed
 * Mushrooms
 * Chiles
 * Shredded cheese
 * Sour cream
 * Salsa
 * Guacamole

Beans

 * 1) If using dried beans, wash them and examine them for any rocks, then soak overnight in plenty of water. Discard the soak water before cooking—your pot plants will love it!
 * 2) Cook the beans until soft:
 * 3) *If using a stove-top method, simmer them in lots of water until they are very soft. You'll need to cook the beans a very long time on very low heat. You may add salt or black pepper to the water. You may add onion halves or a ham bone, which you can remove at the end. Changing the water from time to time will reduce the risk of gas. Expect the cooking to take at least 3 hours, if not 6 or more.
 * 4) *If using a pressure cooker, place the beans and some flavoring (typically salt) in enough water to cover all the beans fully, and bring to pressure. Keep the pressure for about 20 minutes, turn off the heat, and let the pressure fall naturally (about 15 minutes).
 * 5) If desired, smash the beans, perhaps with a potato masher.
 * 6) Season with spices as desired.

Meat

 * 1) Get a large wide pot or tall-sided frying pan.
 * 2) Add any uncooked meats to the pan and fry, stirring to ensure it browns all over. If using a ground (minced) meat, break it up as it cooks. Drain any excess grease.
 * 3) Add spices and other flavorings as necessary.

Rice

 * 1) If using rice, rinse rice well until the water runs clear.
 * 2) Add 2 cups of water per 1 cup of rice, bring to a boil, then reduce to the lowest heat and simmer for 15–20 minutes.
 * 3) Set aside with the lid secured for at least 5 minutes before use.

Assembly

 * 1) Soften the tortillas by heating them up. Use a small amount of oil to prevent sticking if heating in a pan that isn't non-stick. If heating them in an oven, cover with aluminium foil to protect the tortillas from moisture loss.
 * 2) Position a tortilla flat on a suitable surface such as a kitchen counter top.
 * 3) Place your desired fillings on the tortilla in any order, leaving a border of at least a couple inches all around.
 * 4) Fold the bottom flap up. A small flap will allow the fillings to escape from the finished burrito.
 * 5) Bring the side up and over your filling. Tucking the edge of the tortilla under your filling is an excellent extra step.
 * 6) Create a small fold with the remaining side of the tortilla. This is the key to maintaining burrito integrity. Failure is a given if you do not follow this step! The small, diagonal flap is an extra "lock" for the bottom flap of the tortilla—without it, the weight of the filling has the power to force the bottom flap right out of itself.
 * 7) Bring the remaining tortilla flap over the filling.
 * 8) Eat with confidence, though the fillings may be very hot.

Notes, tips, and variations

 * 12-inch tortillas are suggested. If you can find bigger tortillas, use them!
 * When using beans alone, you might want to add up to 20% home-rendered lard (lard substitutions are obvious, but will lack flavor).
 * Common ingredients in Mexican burritos include fried pork (carnitas), marinated grilled steak (carne asada), marinated grilled chicken (pollo asado), stewed pork (al pastor), pork in green chile sauce (chile verde), fried fish, beef tongue (lengua), beef brains (cabeza), goat meat (birria), tripe (tripas), and chicharrones (fried pork rinds, stewed).
 * The Mission burrito generally combines whole beans (sometimes refried beans), Mexican rice, traditional Mexican meats (sometimes ground beef), with optional grated cheese, sour cream, guacamole, sliced jalapenos, salsa fresca/salsa cruda, and sometimes shredded lettuce.
 * A smothered ("wet") burrito is generally a Mission burrito with enchilada sauce, either "red" or "green", poured over it, with grated cheese topping it. it is meant to be eaten with a knife and fork, not held in the hand as other burritos can be.

title: Cookbook:Burrito


text:
Cookbook:Steamed Basmati Rice

This is a fragrant, long-grain variety of rice often used in Indian recipes. Basmati can be cooked in the same way as other rice, in the ratio of two cups water to one cup rice. The recipe below helps to bring out the flavour of basmati.

Ingredients

 * 400 g white basmati rice
 * 600 ml water
 * 1 tbsp butter (optional)
 * 1–3 tsp salt
 * 2 tsp lemon juice
 * Saffron (optional)

Procedure

 * 1) If adding saffron, soak it in a tablespoon or two of hot water for 10 minutes, and add the water and strands in with the lemon juice.
 * 2) Rinse the rice in a sieve for 5–7 minutes under cold running water.
 * 3) Add the water, rice, butter, and salt to a pot.
 * 4) Bring to a rapid boil.
 * 5) Mix in lemon juice and the saffron mixture if using.
 * 6) Cover the pot tightly, reduce heat to minimum, and simmer for 8½ minutes.
 * 7) Taste the rice to check its texture. Cook for 1–5 minutes longer depending on how underdone it is.
 * 8) Fluff with a fork and serve hot with your favorite recipe.

Serving
Steamed basmati rice goes well with the following:
 * Indian curries
 * Chili con carne

title: Cookbook:Steamed Basmati Rice