Hacked DX10 for Windows appears


Finally making use of this blog I created almost a year ago. What a busy year it’s turned out to be, from the inception of the Alky Project to the creation of Falling Leaf Systems and the Sapling Program.

As a fitting start to this blog, I’m proud to release a preview of our DirectX 10 compatibility libraries. These libraries allow the use of DirectX 10 games on platforms other than Microsoft Vista, and increase hardware compatibility even on Vista, by compiling Geometry Shaders down to native machine code for execution where hardware isn’t capable of running it. No longer will you have to upgrade your OS and video card(s) to play the latest games.

The current preview allows you to run a number of examples from the DirectX SDK on Windows XP. They’re not the greatest thing since sliced bread, but we want to whet your appetite. We hope to release builds in the coming months progressing from demos to fully functional games. We also plan to post on this blog from time to time with screenshots and videos of what’s to come.

The preview build is available here. Inside this zip is a README.TXT file with complete instructions on where to install the files (don’t worry, we’ll have an installer in the near future) and how to get and run the examples from the SDK.

We at Falling Leaf welcome your feedback, and we’re committed to giving you the best high-end gaming experience possible, regardless of OS.

Wouldn’t that be kewl?

…Interesting…I’d love to see FPS comparisons.

I’d love to see if it actually works, first :)
(Server is lagged, and I don’t have a test-system)

Oh good! We’ll be able to run all of those DX10 games that don’t use any other Vista-specific functions on our XP boxes! Gosh, I hope he’ll consider adding support for Win 98SE.

Man. I wish I had hundreds of hours to waste on ultimately pointless exercises.

I don’t get it, why couldn’t they move this to XP? If they are already replacing and hacking up the DX libraries or putting their own routines in as intercepts for DX10 API calls then it seems to me they could certainly avoid any Vista specific calls and override or replace any DX10 code that does Vista specific stuff.

Hey, if this means I can play Crysis in DX10 on XP, why not?

Gosh, I can’t wait to get Windows ME 2 with full DRM and incompatibilities! Woot!

This sort of thing already exists for DirectX 9 in the form of softwire/sw-shader/SwiftShader. It is far less useful than it sounds. Note:

These libraries allow the use of DirectX 10 games on platforms other than Microsoft Vista, and increase hardware compatibility even on Vista, by compiling Geometry Shaders down to native machine code for execution where hardware isn’t capable of running it.

They are basically creating an emulation layer where shaders run on the CPU (read: very slowly). Considering the whole point of DX10 is to do virtually everything graphics-related on the GPU, moving all the work back to the CPU makes very little sense and the performance will be absymal considering there won’t be any “casual” DX10 games for a long, long, long time, since again the point of DX10 now is really to be pushing the envelope with new DX10 hardware.

If you’re looking forward to running DirectX 10 games on Windows XP or a Mac at seconds-per-frame timings instead of frames-per-second, this is fantastic. Otherwise, not so much. This is one of those projects that is kind of cool technically but ultimately completely unpractical for real-world use.

Pointless for those who don’t mind buying a new OS every few years just to play the latest games?

Yes, that rapid set of releases really punishes consumers, two OS upgrades in one decade! Madness!

Madness?! THIS… IS… REDMOND!

Come on now, give Vista a little more credit… it’s got that Windows+Tab killer feature!

That’s hardly the point, but let’s see: Win98, WinME, Win2000, WinXP, Vista. Yeah, that’s like two per decade. Good call.

The only upgrades that are really forced because of gaming functionality are Win98 -> XP -> Vista though, which is two per decade (fencepost error!). I certainly never bothered with ME or 2k on a home system.

Didn’t Carmack say recently that DX-10 doesn’t actually do anything under Vista that it couldn’t do under XP, implying that Microsoft wanted to use it as an upgrade incentive? If that were true, a hacked version that makes it XP compatible would seem like a good thing (though I doubt it would last long!). Or am I missing something really obvious?

DX10 doesn’t do anything under Vista that it couldn’t do under Windows 95, if Microsoft really wanted it to. But the XP and Vista driver models are significantly different and thus backporting DX10 to XP would be a significant amount of work… it isn’t like there is some easy registry entry hack you can do to make DX10 work on XP and Microsoft are just blocking it on purpose because they are huge dicks.

The title of this thread is misleading in that this isn’t that kind of hack at all, but rather a very limited software (read: hellishly, unusably slow) emulation of DX10’s features… one that doesn’t run any real software at all, only a couple of demos from the DX10 SDK, and even those don’t fully work.

Also, Carmack wasn’t talking about getting DX10 on XP as much as he was talking about how he isn’t moving to DX10 anytime soon regardless of OS support, because you can essentially do everything DX10 allows you to do with DX9. DX10 just allows you to do things in a more optimized manner (better support for geometry instancing, vram virtual memory, etc) with a more fixed and consistent set of supported features on all DX10-certified cards, which is nice, but the limited install base of Vista machines with DX10 capable cards isn’t worth that trade-off right now, or for the foreseeable future.


You are correct. The only reason DX10 is ‘vista only’ is as a selling point.

From a developer point of view I see this as a good thing. I have only recently convinced management that it is OK to drop Win98 / ME support. There is so much crap that those OS’s do not support it makes programming quite dangerous in the fact that you can easily make something that will not run under one of those two OS’s.

Even windows 2k is stating to have some issues where API’s do not exist for it, but do for XP. I am also seeing some very new API’s that are vista only.

If in 4 years XP still represents a significant size of the market, I may end up with the same backward compatability issues. Another thing I would like MS to do is to stop selling non-64 bit versions of thier OS.

Everyone is going to keep writting 32 bit apps because thats what everyone can run. If I write a 64 bit app, then only 64 bit machines can run them. I wonder if 128 bit chips will be around the corner by the time 32 bit is a distant memory.

That sounds a little contradictory. Sure porting it to XP would be a good chunk of work but would it not be better for the PC games market, the consumers and pretty much everyone if DX10 was more widely available? DX10 isn’t going to be significant for several years because of it’s coupling with Vista and it’s hardware requirements so games will continue to be DX9 with little or no DX10 support.

Releasing DX10 on XP is only going to help developers and consumers and isn’t such a monumental task. Though I guess MS sees it as hurting Vista sales since gamers won’t be required to upgrade to make use of DX10 features and that fancy new video card they just spent $500 on. I think that’s a little short sighted as few games will make use of DX10 because it isn’t available so gamers won’t have to upgrade anyway.

Doesn’t make much sense to me, Vista is still going to make huge gains because of the OEM and retail PC markets, you can’t get away from it. Releasing it on XP would only increase the adoption rate from developers and consumers.

DX10 isn’t something that was ever intended to be immediately relevant the moment Vista launched. It still is an incremental improvement over DX9, and is something developers will be using a few years from now when Vista and DX10-capable cards have become commonplace.

Why do you want DX10 on XP so badly? A year from now I honestly think the kinks regarding Vista gaming performance will be worked out - most of the issues there can be laid at the feet of nVidia’s poor drivers anyways. As an OS, though, it is better than XP. People will buy it, or pirate it, but it will be used and become the new standard.

Why waste the effort of moving Vista features back to XP simply because it’s technically possible? It’s a waste of time, and in the big picture is counter-productive.

Your argument makes perfect sense only if the upgrade to Vista is free.