Log in

View Full Version : DirectX 10 on Windows XP


Hero
August 3rd, 2009, 01:48
Hi all
I don't know that you have ever tried to use directx 10 or not,but probably alll of you know that directx 10 has not been released for windows xp and it seems micro$oft has released it only for vista.
directx 10 has much better performance than directx 9,so a lot of poeple want to have it on windows xp too,so some group of people has released some versions(like directx 10 NE or LE) for windows xp,but these versions are not very stable.
When you install lastest package for offline directx installer from microsoft on windows XP,directx 10 dlls will be available on computer too,but somehow they will not work on windows xp.
anybody knows how these dlls are not working in windows xp?is this only a simple os version checking or it is more complex?
is there anybody who has tried to enable directx 10 on windows xp?

Regards

disavowed
August 4th, 2009, 09:41
though i don't know what the installer is checking to verify the OS, my guess as to WHY ms decided not to make directx 10 xp-compatible is because it uses win32 APIs that were only introduced in Vista

Hero
August 4th, 2009, 23:29
Quote:
[Originally Posted by disavowed;82229]though i don't know what the installer is checking to verify the OS, my guess as to WHY ms decided not to make directx 10 xp-compatible is because it uses win32 APIs that were only introduced in Vista

hmmmm
perhaps I have described this bad....
when you use offline installer of micro$oft in windows xp, it will install a set of directx 10 dlls and even when you use dxdiag.exe,it says that your directx version is 10. But if an application uses directx 10,it cannot be run on windows xp.
I think those installed dlls have an internal OS checking rather than using something special in vista(or probably something that can be emulated in windows xp).

Regards

owl
August 5th, 2009, 08:18
Why don't you trace it and figure out where is failing. I would be interested to find out too.

arc_
August 6th, 2009, 06:02
Microsoft has stated again and again that DirectX 10 simply cannot function on XP because it requires new OS functionality that is only available in Vista and up. And anyway, the absolute majority of games today still use DX9, and "DX10 has much better performance than DX9" is hardly true.

Hero
August 6th, 2009, 06:36
Hmm arc
perhaps it is true that microsoft has stated this,because there is a few APIs that is only available on vista. But I check and compared directx files between windows vista and windows xp sp2 after installing that offline directx installer.
I noticed this offline installer doesn't install main directx 10 core dlls. These dlls are d3d10.dll,d3d10core.dll(and 2 more dependency for these dlls: dxgi.dll,dwmpi.dll).
I checked these dlls and noticed that we have some problem for bringing them to windows xp sp2,because some functions are not available in windows xp sp2.
most of these functions are exported from msvcrt.dll in windows vista that is not portable to windows xp,and only 1 ntdll.dll API(if we assume that operation of APIs which are common between windows xp sp2 and vista have not been changed).
Here is list of unavailable imports for loading directx 10 dlls in windows xp sp2:

d3d10.dll
---------------
msvcrt.dll:_except_handler4_common
msvcrt.dll:__CxxFrameHandler3
msvcrt.dll:_ftol2_sse
msvcrt.dll:_ftol2


d3d10core.dll
---------------
msvcrt.dll:__CxxFrameHandler3
msvcrt.dll:memmove_s
msvcrt.dll:memcpy_s
msvcrt.dll:_except_handler4_common
msvcrt.dll:_ftol2_sse


dxgi.dll
---------------
msvcrt.dll:_except_handler4_common
msvcrt.dll:_ftol2
msvcrt.dll:__CxxFrameHandler3
msvcrt.dll:memcpy_s
msvcrt.dll:memmove_s

ntdll.dll:RtlIsCriticalSectionLockedByThread

dwmapi.dll
---------------
msvcrt.dll:_except_handler4_common

USER32.dll: DwmHintDxUpdate
USER32.dll: IsThreadDesktopComposited

ADVAPI32.dll:RegGetValueW

Hm...
As you see,some of these function specially in msvcrt are so simple(like memmove_s) but some other like user32.dll and ntdll.dll APIs and __CxFrameHandler3 from msvcrt are somehow troubling.
When I checked these DLLs,I noticed the most troubling imports are DwmHintDxUpdate, IsThreadDesktopComposited which use something from kernel....

Do you think if we could patch directx 10 dlls and provide these functions internally in order to start directx 10 in windows xp sp2?

I attached main dlls from vista for those who are interested on checking these dlls. If this is against forum rules,please remove attachments...

And last thing:I don't know if any of these APIS are available in windowx xp sp3,so if someone checks,it will be great.

Regards

arc_
August 6th, 2009, 06:56
And what makes you think it doesn't load more functions via GetProcAddress? What about the kernel mode components?

If you are serious about this you may want to look at the Alky Project, which set out to create a Windows -> Linux/OSX executable converter (they failed). They also created an alpha version (!) of a compatibility layer for DirectX 10 on XP. As the project is dead now this is no longer being worked on, but you could still take a look at it to see what's involved.

Hero
August 6th, 2009, 07:06
I have check that project,but their work was not that stable.
in addiiton,it is surely possible to use GetProcAddress,but I want to try load these dlls first,then reach use of GetProcAddress... :P