Rework log: multithreaded engine - PLEASE HELP TESTING
Posted: Sun Oct 07, 2018 12:32 pm
As anticipated in my previous rework logs, QLC+ 4.12.0 is going to be a huge release for this project.
So, here's another MASSIVE rework happened in the QLC+ code base.
After continuous reports of crossfading cases not working, I decided to face one major change I postponed for too many years.
This rework aims to tackle two major issues of the QLC+ engine:
- Universe composition chain
- fade order not covering all usage cases
The task has been tracked on GitHub, and there you can find also a document with block diagrams explaining the changes.
The QLC+ engine was single threaded. Meaning, everything happened in a single loop, totally ignoring your CPU ability to spawn tasks across cores.
Ironically, a single 3GHz core was better than four 1Ghz cores.
With this rework, instead, Universes are treated as independent tasks (threads) and your OS will decide how to spawn them across the available physical/logical cores.
Plus, each Universe "final composition" is now triggered by a single event, therefore they work in parallel, and not in sequence like it was before.
This gives more breath to the main QLC+ engine clock (aka Master Timer) during its 20ms period, since it runs at 50 Hertz.
It "only" needs to gather from Functions, VC Widgets and Simple Desk, the faders involved and program them on their related Universe.
This is done just once, unless a fader changes continuously. All the rest (fade in, fade out, blending) is handled by Universes.
You might understand this is a very different approach than before, so I really need all the possible help to test this big change.
Of course I already carried out a large number of tests, either manual or automatic. From what I saw, the current state looks pretty good.
This rework includes also a review of part of the Chaser logic. The good theatre people suffered from non functional cases when using the VC Cue list widget and side faders.
So I've had a closer look at it as well and implemented a way to start Chaser steps with all the information they need to behave as expected. (e.g. startup itensity, blend mode)
So, once again, please help testing! I've updated the test versions for all platforms. Pick one, open your projects and check (at least with the DMX/2D monitor) that everything works like before.
The more we test, the better QLC+ 4.12.0 will be. Please spare me the need to rebuild everything one week after I release, because it costs me a lot of time and effort.
I plan to release by the end of the month, which is actually the planned 6 months release cycle for QLC+ 4.
So, there's plenty of time to make this 4.12.0 a great release!
Thanks in advance to everyone who can dedicate some time to testing.
So, here's another MASSIVE rework happened in the QLC+ code base.
After continuous reports of crossfading cases not working, I decided to face one major change I postponed for too many years.
This rework aims to tackle two major issues of the QLC+ engine:
- Universe composition chain
- fade order not covering all usage cases
The task has been tracked on GitHub, and there you can find also a document with block diagrams explaining the changes.
The QLC+ engine was single threaded. Meaning, everything happened in a single loop, totally ignoring your CPU ability to spawn tasks across cores.
Ironically, a single 3GHz core was better than four 1Ghz cores.
With this rework, instead, Universes are treated as independent tasks (threads) and your OS will decide how to spawn them across the available physical/logical cores.
Plus, each Universe "final composition" is now triggered by a single event, therefore they work in parallel, and not in sequence like it was before.
This gives more breath to the main QLC+ engine clock (aka Master Timer) during its 20ms period, since it runs at 50 Hertz.
It "only" needs to gather from Functions, VC Widgets and Simple Desk, the faders involved and program them on their related Universe.
This is done just once, unless a fader changes continuously. All the rest (fade in, fade out, blending) is handled by Universes.
You might understand this is a very different approach than before, so I really need all the possible help to test this big change.
Of course I already carried out a large number of tests, either manual or automatic. From what I saw, the current state looks pretty good.
This rework includes also a review of part of the Chaser logic. The good theatre people suffered from non functional cases when using the VC Cue list widget and side faders.
So I've had a closer look at it as well and implemented a way to start Chaser steps with all the information they need to behave as expected. (e.g. startup itensity, blend mode)
So, once again, please help testing! I've updated the test versions for all platforms. Pick one, open your projects and check (at least with the DMX/2D monitor) that everything works like before.
The more we test, the better QLC+ 4.12.0 will be. Please spare me the need to rebuild everything one week after I release, because it costs me a lot of time and effort.
I plan to release by the end of the month, which is actually the planned 6 months release cycle for QLC+ 4.
So, there's plenty of time to make this 4.12.0 a great release!
Thanks in advance to everyone who can dedicate some time to testing.