Notice that I disabled all shaders and objects/models, also reduced the LOD and set weather to basic fair weather with 2D clouds. Just to be sure the only variable was canvas.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Unfortunately screenshots don't help with fixing the problem, although they certainly show how bad it is. The Canvas has been working fine for 'nearly everyone' for a long time, as you mentioned. This means the only person who can move this forward is you, by doing some debugging and investigation/tests at the code level.
(There's nothing anyone else can do to help fix the problem, since we don't see the same issue: we're only able to suggest things based on the information you can give us)
The FG1000 is not a great test, since it also uses a lot of Nasal: I'd recommend test the Canvas Map dialog, and the UFO. (or someth other 'simple' canvas use) You could start with the Canvas map dialog and remove some elements, and check the performance as you go.
Alternatively, you could try to find some other users who have the same issue, and compare with them, what your systems / aircraft / settings have in common, that no one else is doing. If it's something dependant on hardware or drivers, it would make sense that some other people experience the same thing.
I'm guessing you have already tried a clean system with no customised FG settings? And you're using the stable drivers for your OS+GPU. (For nVidia on Linux, use the binary ones, for example)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
UFO lat and lon 0,
No canvas map = 167 FPS
With canvas map = 107 FPS
About debugging, I have no clue where to start.
The GPU is an Intel HD3000 from a second gen i7. Could Canvas be using some shader or something that this GPU doesn't have?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'd suggest to try different drivers: I've used machines with an HD3000 and don't remember any particular problem with Canvas. Or plug in a discrete GPU to verify that's the problem: I usually keep some old ones in a box but right now I've dontated them all to other FG users.
The Canvas doesn't use shaders at all : it uses some older API features which some drivers don't support well, but I've used machines with pretty much that exact GPU and performance was ok (but, I only got 30-40 fps to begin with, so likely a very different test setup)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I don't have much of a choice for Intel driver do I? I tested different versions of the kernel, from 3.x all the way to 5.x, all with the same problem.
And 2 of my computers are laptops and the third one, well, I can't afford a GPU at this time, so using integrated Intel, and that wouldn't fix the bug anyway.
The other laptop is a third gen i5 and the desktop is a fourth gen i5. All show the same issue.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Canvas (and the associated Nasal code) is heavy on the GPU. This is not a bug, this is just what it is. Canvas internally uses FBOs and a lot of small draw calls, so underpowered GPUs will have a lot of trouble dealing with it. The only recommendation I can give is that you stop using aircraft using Canvas or buy a better GPU/system.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
UPDATE
I've found a work around that greatly improves canvas performance on integrate GPUs.
I noticed that the majority of aircraft displays, using map framework or not, are displayed at 2048x2048 pixels or higher, and ran at max possible FPS. This for sure chokes the little GPUs and saturates the whole system IO.
By reducing the canvas displays size to something more reasonable, like 512x512, which should be more than adequate on 5" to 10" virtual screens, and limiting the frame rate from unlimited to 15 FPS, we can get an FPS delta of at least 40 FPS.
With testing done on the Mirage 2000 the FPS on a second gen integrated GPU went from circa 8 FPS to over 90 FPS.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Notice that I disabled all shaders and objects/models, also reduced the LOD and set weather to basic fair weather with 2D clouds. Just to be sure the only variable was canvas.
The FG1000 PFD/MFD on its own causes the same performance impact.
Unfortunately screenshots don't help with fixing the problem, although they certainly show how bad it is. The Canvas has been working fine for 'nearly everyone' for a long time, as you mentioned. This means the only person who can move this forward is you, by doing some debugging and investigation/tests at the code level.
(There's nothing anyone else can do to help fix the problem, since we don't see the same issue: we're only able to suggest things based on the information you can give us)
The FG1000 is not a great test, since it also uses a lot of Nasal: I'd recommend test the Canvas Map dialog, and the UFO. (or someth other 'simple' canvas use) You could start with the Canvas map dialog and remove some elements, and check the performance as you go.
Alternatively, you could try to find some other users who have the same issue, and compare with them, what your systems / aircraft / settings have in common, that no one else is doing. If it's something dependant on hardware or drivers, it would make sense that some other people experience the same thing.
I'm guessing you have already tried a clean system with no customised FG settings? And you're using the stable drivers for your OS+GPU. (For nVidia on Linux, use the binary ones, for example)
UFO lat and lon 0,
No canvas map = 167 FPS
With canvas map = 107 FPS
About debugging, I have no clue where to start.
The GPU is an Intel HD3000 from a second gen i7. Could Canvas be using some shader or something that this GPU doesn't have?
I'd suggest to try different drivers: I've used machines with an HD3000 and don't remember any particular problem with Canvas. Or plug in a discrete GPU to verify that's the problem: I usually keep some old ones in a box but right now I've dontated them all to other FG users.
The Canvas doesn't use shaders at all : it uses some older API features which some drivers don't support well, but I've used machines with pretty much that exact GPU and performance was ok (but, I only got 30-40 fps to begin with, so likely a very different test setup)
I don't have much of a choice for Intel driver do I? I tested different versions of the kernel, from 3.x all the way to 5.x, all with the same problem.
And 2 of my computers are laptops and the third one, well, I can't afford a GPU at this time, so using integrated Intel, and that wouldn't fix the bug anyway.
The other laptop is a third gen i5 and the desktop is a fourth gen i5. All show the same issue.
Canvas (and the associated Nasal code) is heavy on the GPU. This is not a bug, this is just what it is. Canvas internally uses FBOs and a lot of small draw calls, so underpowered GPUs will have a lot of trouble dealing with it. The only recommendation I can give is that you stop using aircraft using Canvas or buy a better GPU/system.
UPDATE
I've found a work around that greatly improves canvas performance on integrate GPUs.
I noticed that the majority of aircraft displays, using map framework or not, are displayed at 2048x2048 pixels or higher, and ran at max possible FPS. This for sure chokes the little GPUs and saturates the whole system IO.
By reducing the canvas displays size to something more reasonable, like 512x512, which should be more than adequate on 5" to 10" virtual screens, and limiting the frame rate from unlimited to 15 FPS, we can get an FPS delta of at least 40 FPS.
With testing done on the Mirage 2000 the FPS on a second gen integrated GPU went from circa 8 FPS to over 90 FPS.