TRS19 & TRS22 Performance on Radeon GPU

twixed

New member
Hi all,

We all know that TRS has a very old game engine, and one should not expect miracles from it, but when a game on minimum settings runs terrible on a system that handles Cyberpunk, TSW and MSFS2020 on ultra without any issues, that tends to raise some questions. So, I've been playing (and paying for) Trainz for the past four months, and even upgraded my system a bit during this time, but the game performance has always been terrible.
I'll start with my current system's specs:
Intel Xeon E5-1650v3 (6C/12T) @ 4.3GHz
128Gb DDR4 2133MHz
AMD Radeon 6600 XT 8GB
both system and game installed on nVME drives (TRS content folder is NOT on the system drive)

The issue I'm having with E2 engine is that it cannot utilize my GPU at its full potential. More than half of the time GPU is busy copying something from/to somewhere instead of doing actual rendering. That happens on any route, with any scenario, independently of the amount of objects on scene. And during this GPU frequency stays around 700 MHz (with occasional spikes to 1100).

Here's a screenshot that probably will explain the issue a little bit better:
https://imgur.com/a/QzoeLui
QzoeLui

6ULTeXV


And here is the TRS profiler screenshot:
https://imgur.com/hv7SshO

I've tried different driver versions, different settings, played with CPU affinity and Windows' graphics settings. Nothing worked.

If anyone knows how to solve this issue, please respond.
 
Hi,
At the risk of being obvious:-
have you got an antivirus program running? If so, can you add both the Trainz program and the data folder to the exemption list?
Have you tried reducing the quality settings?

I find that trainz uses the gpu quite hard (Rtx 2060), in contrast to the Tane and earlier programs.

Colin
 
have you got an antivirus program running?

No (besides the built-in MS antimalware service).

Have you tried reducing the quality settings?

Screenshot that I've provided in the first post is made with the lowest settings possible.

I find that trainz uses the gpu quite hard (Rtx 2060), in contrast to the Tane and earlier programs.

It doesn't do that with AMD GPUs it looks like (I had RX 570 before 6600 XT, and situation was exactly the same).

E2 engine is biased toward nVidia?
 
No (besides the built-in MS antimalware service).



Screenshot that I've provided in the first post is made with the lowest settings possible.



It doesn't do that with AMD GPUs it looks like (I had RX 570 before 6600 XT, and situation was exactly the same).

E2 engine is biased toward nVidia?


TRS TS19 and TS22 use a fairly new game engine. It certainly isn't the same as was used for TRS2004 for example. nVidia have a program that helps companies such as N3V make the most of their software.

Trainz depends a lot of the content and much of it is created by the community and it is of varying efficiency. There is one particular asset on the DLS created in Sketchup that if it is within frame kills the performance of most machines. Try Middleton for laptops if that has poor performance then there is a problem.

Cheerio John
 
TRS TS19 and TS22 use a fairly new game engine. It certainly isn't the same as was used for TRS2004 for example.

We are not talking about pre-TANE versions. Last three major versions on the other hand (T:ANE, TRS19 and TRS22) use the so-called "new" E2 engine, which does not support OpenGL any more, and allowed to (lazily) implement PBR textures (or something devs call that).

Trainz depends a lot of the content and much of it is created by the community and it is of varying efficiency. There is one particular asset on the DLS created in Sketchup that if it is within frame kills the performance of most machines. Try Middleton for laptops if that has poor performance then there is a problem.

I'll repeat: this situation does not depend on the route, nor scenario, nor the amount of objects on scene/in frame. TRS has same poor performance on community routes as well as official ones. This is an engine issue, not the content.
 
Unless you're an expert in GPU rendering pipelines and know the E2 render pipeline, you can forget about analysing the profile data. The key (and only) metric for users to measure from the profiler is "fps".

Your card ranks 38th on userbenchmark and it isn't that different to my system:
https://gpu.userbenchmark.com/Compare/Nvidia-GTX-1080-Ti-vs-AMD-RX-6600-XT/3918vs4117

I run at full settings at vsync = half and get 30fps most of the time (max fps at half vsync).

It may be worth running a benchmark test to ensure your system is performing as expected in a benchmark test. If it is, then we need to look elsewhere to see why your performance is worse than expected (although you haven't yet provided fps details).

Regarding "this situation does not depend on the route, nor scenario, nor the amount of objects on scene/in frame." if you are getting poor performance in an empty baseboard, then there is something strange going on somewhere.
 
I'm inclined to think you have something installed that TRS19 doesn't like.

The E2 game engine which is 64bit was created originally for TANE and is continually being developed and is GPU intensive, the old Jet Engine 32 bit, used up to and including TS12 was CPU bound and had reached the limits of it's capability.

Thoughts:
Put bluntly I avoid AMD GPUs, they work very well with certain games and abysmally with others, Trainz has does work well with Nvidia GPUs however you in theory shouldn't be having a problem with a 6800 XT ,if it's not some rogue asset you have got installed which does happen.

It's remotely possible the your Xenon is bottlenecking the GPU, 7 year old CPU's generally don't go well with the latest high end GPUs, would be more noticeable on an extremely GPU intensive game / simulator like TRS19.

If you are getting in the region of 100% Cpu and say only 50% GPU that's a good sign of bottlenecking, I would expect with TRS19 to see 90 to 100% GPU and and around 30% CPU, just ran a test on my other PC, not my main one but it's currently running 100% GPU and 35% CPU. that's an i7 6700K and A GTX980 TI on maxed settings, GPU is running a bit warm at 79°C, CPU is happily chugging along at 58°C, note I don't normally run TRS19 at max settings on that PC!

Alternatively but unlikely if not having issues with other games it may be your PSU either having problems if it's getting on a bit or underrated for a 6800XT which needs a 650 Watt PSU minimum, Gold or Platinum would be my preference and I always go on the high side so would go for a 750Watt PSU.

nVME drive? it's not getting full up? that could be a problem if it's having to use the swap file.

When I get problems the first place I look is the log after running a full database repair, you can find things like bad scripts trying to compile over and over again before giving up, longest one I had that actually didn't lock up, took 10 minutes before it gave up, same would happen if its being used in a route.
 
Unless you're an expert in GPU rendering pipelines and know the E2 render pipeline, you can forget about analysing the profile data. The key (and only) metric for users to measure from the profiler is "fps".

Your card ranks 38th on userbenchmark and it isn't that different to my system:
https://gpu.userbenchmark.com/Compare/Nvidia-GTX-1080-Ti-vs-AMD-RX-6600-XT/3918vs4117

I run at full settings at vsync = half and get 30fps most of the time (max fps at half vsync).

It may be worth running a benchmark test to ensure your system is performing as expected in a benchmark test. If it is, then we need to look elsewhere to see why your performance is worse than expected (although you haven't yet provided fps details).

According to this "test" my system is considered to be an "Aircraft Carrier":
UserBenchmarks: Game 89%, Desk 87%, Work 83%CPU: Intel Xeon E5-1650 v3 - 87.6%
GPU: AMD RX 6600-XT - 97.3%
SSD: Pcie SSD 1TB - 43.6%
SSD: Pcie SSD 1TB - 54.5%
HDD: WD Black 1TB (2013) - 72.5%
HDD: WD Blue 500GB (2010) - 58.2%
HDD: Hitachi HTS545050A7E680 500GB - 38.3%
RAM: Hynix HMA42GR7AFR4N-TF 8x16GB - 111.6%
MBD: Huanan Default string


Regarding "this situation does not depend on the route, nor scenario, nor the amount of objects on scene/in frame." if you are getting poor performance in an empty baseboard, then there is something strange going on somewhere.

That's exactly what I'm talking about. The issue is not in the hardware. Everything else runs great, and none of the other [game] engines I watched and ran utilized GPU's copy engine.
 
Please run the following tests and report back:

1. Delete the performance.conf file from your local data /cache folder
2. Run TRS22.exe
3. Choose Ultra in the configurator
4. In the Trainz Settings, change vsync to None
5. Start Trainz
6. Run Tutorial 1
7. Note the fps
8. Run the same test again choosing the other performance settings.
9. Send us your results.
 
The E2 game engine which is 64bit was created originally for TANE and is continually being developed and is GPU intensive, the old Jet Engine 32 bit, used up to and including TS12 was CPU bound and had reached the limits of it's capability.

32 vs 64 bit is about how much memory an application can address without utilizing bank switching of some sort, not about how efficient said application is.

It's remotely possible the your Xenon is bottlenecking the GPU, 7 year old CPU's generally don't go well with the latest high end GPUs, would be more noticeable on an extremely GPU intensive game / simulator like TRS19.

If you are getting in the region of 100% Cpu and say only 50% GPU that's a good sign of bottlenecking, I would expect with TRS19 to see 90 to 100% GPU and and around 30% CPU, just ran a test on my other PC, not my main one but it's currently running 100% GPU and 35% CPU. that's an i7 6700K and A GTX980 TI on maxed settings, GPU is running a bit warm at 79°C, CPU is happily chugging along at 58°C, note I don't normally run TRS19 at max settings on that PC!

The only thing this "intensive game / simulator" is bottlenecking at is GPU's copy engine, which should only be used for DMA transfers upon initial stage load (including all the vertices, textures, maps and what not), but not throughout the lifecycle of that stage. It will be called again to move a chunk of data when a new object is added to said stage/scene, but it should never run constantly. Even on empty routes with no movement at all E2 (engine) still tortures copy engine for no apparent reason. This only tells that a game engine is doing something wrong.

An E5-1650v3 is basically on par with Ryzer 7 5600x. IPC is lower, but that is not a big issue since it can be mitigated with higher clock speed. And no, TRS19/TRS22 cannot load even a single thread of this CPU up to 100%. Even if I limit it only to 6 threads (which may be a good idea, since, according to profiler, E2 spends less time switching threads in this case). So CPU is not an issue.

Alternatively but unlikely if not having issues with other games it may be your PSU either having problems if it's getting on a bit or underrated for a 6800XT which needs a 650 Watt PSU minimum, Gold or Platinum would be my preference and I always go on the high side so would go for a 750Watt PSU.

I have a gold rated 850 Watt PSU. Besides, AMD GPUs are not as power hungry as nVidia's heaters. So that's not the case either.

nVME drive? it's not getting full up? that could be a problem if it's having to use the swap file.

With 128Gb of RAM I don't have to use swap file at all. And yes, I'm aware of solid state drive's behavior when they get filled up over 75% of their capacity. But then again, this will only impact the write speed and can be avoided with periodic TRIMming. Yet again, none of my NVMe drives suffers from that issue, because they are only about 50% full.

When I get problems the first place I look is the log after running a full database repair, you can find things like bad scripts trying to compile over and over again before giving up, longest one I had that actually didn't lock up, took 10 minutes before it gave up, same would happen if its being used in a route.

That may be an issue, but again, I doubt this have something to do with copy engine abusing. This just should not be happening.
 
Last edited:
Please run the following tests and report back:

1. Delete the performance.conf file from your local data /cache folder
2. Run TRS22.exe
3. Choose Ultra in the configurator
4. In the Trainz Settings, change vsync to None
5. Start Trainz
6. Run Tutorial 1
7. Note the fps
8. Run the same test again choosing the other performance settings.
9. Send us your results.

Here are the results:
Ultra settings profile: 17 FPS, 100% GPU 3D engine, 22% GPU copy engine, 10% CPU
High settings profile: 36 FPS, 100% GPU 3D engine, 27% GPU copy engine, 13% CPU
Medium settings profile: 141 FPS, 100% GPU 3D engine, 49% GPU copy engine, 24% CPU
Low settings profile: 116 - 152 FPS, 40% GPU 3D engine, 35% GPU copy engine, 12% CPU

Jumping FPS at low graphics profile seems to be related to GPU changing the core frequency up and down a lot due to underload.


Medium profile seemed like a way to go, so I decided to load GZ 57921 scenario for Niddertalbahn route:
~60 FPS, 72% GPU 3D engine, 59% GPU copy engine, 36% CPU.

Yet again GPU is busy copying stuff instead of rendering.
 
I don't know much about this stuff, but as the scene changes, wouldn't the GPU have to copy more data to render? It would be changing constantly if anything is moving through the scenario. Just a guess.
 
I don't know much about this stuff, but as the scene changes, wouldn't the GPU have to copy more data to render? It would be changing constantly if anything is moving through the scenario. Just a guess.

It looks like that's exactly what E2 is doing: it removes meshes from VRAM and places a new ones (basically, same objects) with new coordinates. But that's wrong. That's extremely inefficient. Moving tens (or even hundreds? with textures?) of megabytes of data every few milliseconds is a performance killer. Engine should just tell GPU (well, DirectX in our case) to translate mesh 0.0001f on the axis instead of asking to forget this object and get it from RAM again. This probably also explains stutter movement of objects on the scene.
 
Here are the results:
Ultra settings profile: 17 FPS, 100% GPU 3D engine, 22% GPU copy engine, 10% CPU
High settings profile: 36 FPS, 100% GPU 3D engine, 27% GPU copy engine, 13% CPU
Medium settings profile: 141 FPS, 100% GPU 3D engine, 49% GPU copy engine, 24% CPU
Low settings profile: 116 - 152 FPS, 40% GPU 3D engine, 35% GPU copy engine, 12% CPU

Jumping FPS at low graphics profile seems to be related to GPU changing the core frequency up and down a lot due to underload.


Medium profile seemed like a way to go, so I decided to load GZ 57921 scenario for Niddertalbahn route:
~60 FPS, 72% GPU 3D engine, 59% GPU copy engine, 36% CPU.

Yet again GPU is busy copying stuff instead of rendering.

With your GPU I'd say those figures are about what I would expect to see. To me 30 fps is acceptable and I can't see a problem. Film I seem to recall is 24 fps.

Cheerio John
 
I can see Twixed's point, but in translating the mesh along the axis, it has to somewhere read in what direction and at what rate of speed along which axes (plural). That would be for every frame. And that is only for what is staying on the screen. As movement occurs some objects will move off the screen and others will come on. So, it has to determine which ones to no longer translate and where to place the new objects.
 
With your GPU I'd say those figures are about what I would expect to see. To me 30 fps is acceptable and I can't see a problem. Film I seem to recall is 24 fps.

I totally understand that for somewhat serious simulation games 20+ FPS is perfectly acceptable. Heck, the very first simulation game I played in my life was producing only about 2 FPS (and was only drawing dots, not even polygons, let alone textures). But it is kinda strange that the same hardware that runs simulators like TSW and MSFS2020 at 60+ FPS on ultra settings struggles (dips below 20 FPS and stutters movement of trains on the latest Znamesk - Svir route, for example) with something that is more than two decades old. And pls don't tell me that E2 was more that just a facelift for an aging engine. This engine is clearly doing something wrong and I am trying to figure out if that's something that can be fixed or at least tweaked a little bit to improve performance.
 
Last edited:
I can see Twixed's point, but in translating the mesh along the axis, it has to somewhere read in what direction and at what rate of speed along which axes (plural). That would be for every frame. And that is only for what is staying on the screen. As movement occurs some objects will move off the screen and others will come on. So, it has to determine which ones to no longer translate and where to place the new objects.

It doesn't matter if objects present on screen or off screen. They still will be in VRAM, and there should be absolutely no reason to force GPU to copy them from main system RAM again. Yes, CPU will have to calculate new object positions and rotation angles based on whatever physics it implements to calculate masses, vectors, and all other stuff, but instead of recreating and copying these objects for every frame a game engine should only tell renderer to translate and rotate objects GPU already has.
 
Back
Top