Am 25.09.2010 um 05:32 schrieb Luis Carlos Busquets Pérez:
Concerning the e-mail http://www.winehq.org/pipermail/wine-devel/2010-April/082900.html
If I remember correctly d3dx is broken by design in that regard. See D3DXCONSTTABLE_LARGEADDRESSAWARE in D3DXGetShaderConstantTableEx: http://msdn.microsoft.com/en-us/library/bb943959(v=VS.85).aspx
It seems that by default native makes the assumtion that there are no pointers with the highest bit set. If the app requests large address spaces via the flag in the .exe file it is supposed to pass D3DXCONSTTABLE_LARGEADDRESSAWARE to d3dx. Obviously there are apps that don't do that, like Eve Online.
Of course it'd be perfect if you can find a way that provides all the features native d3dx9 provides and doesn't rely on the address space layout. I think that the constant table functions are called often and are performance critical, so maybe this is all a nasty performance hack.