Author Topic: Linux again  (Read 4338 times)

harryw

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Linux again
« on: November 28, 2015, 09:57:16 PM »
This was supposed to go into the "Other Operating Systems" sub forum, but there doesn't seem to be a way to start threads or reply there. (?)

Anyway, I am giving TopoFusion 5.13 with wine on Linux Mint 17.2  (running in vmware) a shot and I got past the splash screen and the credentials form. TopoFusion then quits after popping up an error box with the message "Can't initialize DirectX:Couldn't load 'fuzzy-writing' tile".

(It was necessary to add VB support via WineTricks and manually register GPSMaster.ocx, just for info)

TopoFusion log contains:
Code: [Select]
TopoFusion 5.130 Log Begin
SizeChanged : Not initialized, aborting
Setting internet settings..
SizeChanged : Not initialized, aborting
GPSMaster.ocx, Initialize...
GPSMaster.ocx, Initialize...
Windows Major Version: 6
Windows Minor Version: 1
Windows Build Number : 7601
Windows Platform ID  : 2
Windows CSD Version  : Service Pack 1
Initializing Winsock
Initializing Direct3D
Direct3D : Driver "NVIDIA GeForce FX 5800" (nv4_disp.dll)
Direct3D : Display properties - 1672x961, Format=22, Refresh = 60
Free Texture Memory = 264806656 bytes
Direct3D : Hardware supports rendering after flips (is relatively fast)
Direct3D : Hardware supports at least DX7
Direct3D : Hardware supports at least DX9
Direct3D : Hardware supports anisotropic filtering.
Direct3D : Hardware supports ALPHA pixels in textures.
Direct3D : Hardware needs textures sized on powers of two.
Direct3D : Hardware doesn't support antialiased lines.
Direct3D : Hardware supports alpha blended lines.
Direct3D : Hardware supports textured lines.
Direct3D : Maximum Texture Width: 8192
Direct3D : Maximum Texture Height: 8192
Color Info : Sizes : R=8, G=8, B=8
Color Info : Shifts : R=16, G=8, B=0
Direct3D : Hardware supports color conversion.
Direct3D : Hardware supports compressed textures DXT1.
Creating Surfaces (896 x 405)
Creating Resource Tiles...DirectX Error [.\ddutil.cpp:303]: D3DXERR_INVALIDDATA

Given that information, especially the file/line info in the log, could a developer maybe hazard a guess what might be responsible for the d3dx error? Any pointer welcome!

Thanks i.a.

ScottMorris

  • Administrator
  • Sr. Member
  • *****
  • Posts: 2756
  • TopoFusion Author
    • View Profile
    • http://www.topofusion.com/diary
Re: Linux again
« Reply #1 on: November 29, 2015, 09:41:23 AM »
Hi,

Thanks for the post.  I believe I closed the auxiliary forums when I was losing the battle against spam.  I have some new protections that seem to be working much better, so perhaps I can re-enable them.

So here is the line of code that is failing:

ddrval = D3DXCreateTextureFromFileInMemoryEx(g_pd3dDevice,buffer,size,0,0,1,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE,colorkey,NULL,NULL,&texture);
DDCHECK(ddrval);

This line is called for loading things like the 'downloading' tile, arrows and points.  Basically these things are stored as 'resources' in the code (so a part of the executable), and the code is turning them from images into direct3D textures for quick drawing.

I'd guess the D3D part is working, but the resources aren't found or aren't correctly loaded (given the Invalid data message).

Hope that helps some.  Let us know how it goes!

Thanks
 
Scott Morris - founder and co-author of TopoFusion
email: smorris@topofusion.com

harryw

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: Linux again
« Reply #2 on: December 08, 2015, 12:47:32 PM »
Thanks likewise for the quick reply!
Yes, that did help. Turns out D3DXCreateTextureFromFileInMemoryEx was implemented in a later version of wine (specifically, d3dx9_43.dll) than the one that comes standard with Mint 1.7.2. I installed wine 1.7.55 and now TopoFusion starts up fine. Next problem: Tiles won't load. 

The log shows a lot of

Code: [Select]
DirectX Error [.\download.cpp:1845]: D3DXERR_INVALIDDATA
as the apparent source of the problem.  Could you look up that line for me please?

edit: sidenote - tiles do get downloaded (cache is getting filled) and tracks / trackpoints display.  And the same problem persists with a native linux installation and nvidia driver, so I'm a bit stuck now.
« Last Edit: December 18, 2015, 09:40:38 AM by harryw »

ScottMorris

  • Administrator
  • Sr. Member
  • *****
  • Posts: 2756
  • TopoFusion Author
    • View Profile
    • http://www.topofusion.com/diary
Re: Linux again
« Reply #3 on: January 15, 2016, 10:12:33 AM »

Looks like the tiles are not being loaded into a D3D surface, which means they won't display.  Here's the line of code:

hr = D3DXLoadSurfaceFromFileInMemory(surf,0,0,buf+ii,buflen-ii,0,D3DX_FILTER_NONE,0,0);

Best of luck!
Scott Morris - founder and co-author of TopoFusion
email: smorris@topofusion.com

harryw

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: Linux again
« Reply #4 on: June 26, 2017, 11:09:11 AM »
Ok, it works! After a long hiatus I felt like trying again and it finally does. Pro 5.43

Wine 2.0.1, key is installing directx 9c native, overriding the builtin emulation (which still doesn't work) There are still some acceptable issues with the user interface button placement but the tiles load, and that was the only show stopper. Wine STRONGLY discourages using native directx, but in this case it works (I'm not running any windows games)
Anybody wants details, please ask. This is mainly a FYI for Scott Morris to pass on if there are any requests coming his way pertaining Linux compatibility.

ScottMorris

  • Administrator
  • Sr. Member
  • *****
  • Posts: 2756
  • TopoFusion Author
    • View Profile
    • http://www.topofusion.com/diary
Re: Linux again
« Reply #5 on: June 26, 2017, 01:18:23 PM »
Thanks for the post and report, Harry.  Very helpful.  I'll keep it in mind for anyone else that inquires.

Cheers!
Scott Morris - founder and co-author of TopoFusion
email: smorris@topofusion.com