# How to run DirectX10 on non-compatible hardware?

I'm going to be away for a little bit, bringing my netbook with me to do some basic DirectX10 stuff.

How can I run DX10 on DX9.0c hardware?

## Windows Advanced Rasterization Platform (WARP)

WARP is a high speed, fully conformant software rasterizer. It is a component of the DirectX graphics technology that was introduced by the DirectX 11 runtime. The DirectX 11 runtime is installed on Windows 7, Windows Server 2008 R2, and Windows Vista with the [KB971644] update.

To use WARP

Direct3D 10, 10.1, and 11 components can use an additional driver type that you can specify when you create the device (for example, when you call the D3D11CreateDevice function). This driver type is D3D10_DRIVER_TYPE_WARP or D3D_DRIVER_TYPE_WARP. When you specify this driver type, the runtime creates a WARP device and does not initialize a hardware device.

Because WARP uses the same software interface to Direct3D as the reference rasterizer does, any Direct3D 10 or 10.1 application that can support running with the reference rasterizer can be tested by using WARP. To use WARP, rename D3d10warp.dll to D3d10ref.dll and place it in the same folder as the sample or application. Next, when you switch to ref, you will see WARP rendering.

I copied all of that from the article, but looks like the most relevant and useful part. You probably should read the entire article though.

I was pretty sure that doing this was impossible when I read your question. A little digging and I was surprised.

• what about DX9.0c tho..... – user6465 May 13 '11 at 11:01
• @Sauron: You said you're doing DirectX 10 anyway. Did you actually read the linked documentation? One of the paragraphs reads Enabling Rendering When Direct3D 10 Hardware is Not Available – OregonGhost May 13 '11 at 12:59
• Ohhh I thought it was talking about DX10->11 with it, nm. my bad. – user6465 May 13 '11 at 13:12

Direct3D no longer ships with a software rasterizer. You could, however, check out WARP. http://msdn.microsoft.com/en-us/library/gg615082.aspx

WARP is good but you're going to find it quite slow on a netbook. My experience is that even on a quite beefy i7 it struggles to hit 60 fps with relatively simple scenes, and also is incredibly CPU-intensive - more black marks against it for netbook use.

If you want to use the D3D10 API I'm going to make an alternative suggestion. Don't. Use D3D11 instead and use feature levels to gain support for downlevel hardware. Just specify D3D_FEATURE_LEVEL_9_3 in your D3D11CreateDeviceAndSwapChain call, stick within the documented restrictions, and you'll run.