Discussion in 'MSI AfterBurner Application Development Forum' started by Unwinder, Feb 20, 2017.
Well, this makes alerts on either fps or frametime way less useable unfortunately.
Alerts were never intented to be used on framerate and frametime graphs
Close again, but you were looking at wrong part of source code. RTSSSharedMemorySample allows you to play with text formatting tags directly, explicit text positioning tag is allowing you to move cursor to any desired position of the screen:
Using such tag as a separator in OSD layout you can move any OSD item to any place of the screen.
That's a pity really as the most cool feature would be an ability to color the frametimes/fps graph according to momentary monitoring data, make the frametime spikes red for example. Well, there's always the next version =)
Hi I've got an annoying issue with CSGO using MSI afterburner, sometimes when I alt-tab to surf the internet, when I comeback in game I get 2d mode clock, like without gpu boost, it drops my fps to 90 with a lot of stuttering and the only way to get rid of that is to reload the game. Does anyone already had the issue ?
It is very unlikely that this has anything to do with Afterburner. If you have an AMD GCN v1.0 card (78xx, 79xx, 280/x), what you are experiencing is the infamous UVD bug.
Two groups on one row? Re-positioning graphs?
In this image posted by unwinder we can see multiple groups on the same row, and graphs too (so they appear to the right):
Can anyone explain how this is done?
I've seen the <P=x,y> tag used for absolute positioning, perhaps this could do it, if used in the group separator?
On a related note, is there a reference for the formatting tags?
I can reverse engineer it from the cfg files mostly, but then there are extra things like this P tag that I only read about in this thread. Similarly, I know that these macros are supported: "Both prolog and epilog separators currently support the following macro names for displaying system specs: %FullCPU%, %CPU%, %RAM%, %FullGPU%, %GPU% and %Driver%." But I also have seen %AB% and %Time% (which works in the epilog) and a few others.... and then there are other macros like <APP> for the GPU group names, but neither <CPU> nor %CPU% work as group names - perhaps the intention is to use these macros only in certain places. I feel like I am missing something.
Some things I've discovered along the way:
Macros are case sensitive. %Time% works but %TIME% does not. (Oh, and it gets my 24-hour time setting, nice!)
Importing from the HWInfo plugin works just like it says in the https://forums.guru3d.com/threads/rtss-6-7-0-beta-1.412822/page-41#post-5477995 guide. Note that, if you exit HWInfo, AB re-starts HWInfo when it polls.
Interleaved hardware polling ( HwPollInterleave=1 ) is awesome, At least halved the monitoring time for me.
RTSS Framerate limiter denominator (eg LimitDenominator=10 ) does not appear to work, am I doing it wrong?
I had to search for a search engine that would let me search for "%CPU%" with the symbols XD I didn't find one!
Correct, that's explained a few posts above:
Currently there is no macro support for GPU group names, but it definitively sounds like a good idea. I'll add an ability to use the same set of macro definitions as prolog/epilog for group name overrides.
Correct, macros are case sensitive.
Correct, HwInfo (or AIDA if you use it) is spawned (if installed) by the plugin. Spawning can be disabled (or set to one-shot spawn mode, when it is spawned just once and can be closed after that) in each plugin configuration file if necessary. I'd also like to support automatic HwInfo/AIDA process shutdown on closing the plugins, but currently neither AIDA nor HwInfo provide CLI for that.
Keep in mind that the value is not boolean, so you can set it to values higher than 1 to decrease hardware polling time even more (e.g. setting it to 2 will refresh all sensors in 3 polling periods, i.e. refresh graphs 1,4,7... on the first period, graphs 2,5,8... on the second period, 3,6,9... on the third period and the same in the loop).
If you use denominator of 10, the limit must be specified in 0.1 FPS units. I.e. 600 to set 60 FPS limit.
I am stupid. Macros are amazing.
Graph positioning feature is OP. Layered coloured graphs in the OSD are you serious!
Alarm Min/Max inversion
Neto's theme is tasteful. Graphing and alarming ping times.
Sorry my mistake, the denominator works fine.
This is very cool, we can get a smoother updating display and mitigate the effects on CPU with something like this:
I see that it works up to some very large numbers (100 lol) but I found that there was a base-level of overhead and I didn't see much benefit beyond 5, and at that point it slowed the 'feel' of the interface. 1,2,3 are good numbers to try IMO, with poll periods 750, 666, 500 I saw no measurable increase (CPU usage was under 1% that's low enough) but the experience is quite different. More people should try this
Your macro additions sound excellent! Thanks!!
So, I finally figured out why I was not having any luck with the <P> tag, it's a 'feature' I think, of the way that graphs are displayed. If there is no flag set for the label ( ie GraphLabel=0 ) Then there is no text around the graph at all, just the line. This causes the <P> tag to be ignored for positioning the graph. The positioning only takes effect after some text is present. This also works for GraphLabel=2 (The 0 bit is unset).
For example, If (with Graph Label set to 0) we create in the Graph Separator a Child object for the CPU Usage graph and enter '<P=80,300>', we might expect to see the graph move (80 pixels right and 300 pixels down). But it does not move.
If we enter a text marker like so 'xxxxx<P=80,300>', then we see the 'xxxxx' text in the normal graph position, immediately followed by the graph. Again, it seems the <P> tag is un-used.
If we use a second text marker like so 'xxxxx<P=80,300>zzzzz', now everything changes! Now, we see our 'xxxxx' marker, and then we have our 'zzzzz' marker in the 80,300 position, and then the graph.
So, it seems that we need some kind of text to trigger the <P> tag. I've found that, if I do not want text but want to position the graph, I can use the '\r' escape character '<P=80,300>\r' and the graph will be in it's place.
But, we can also position text independently of the graph in this way:
Now I have the label 'CPU USAGE' as giant transparent faded text which takes up the whole background of the graph. Looks pretty cool!
So, even though it caused me a lot of confusion, I think it's an excellent and powerful feature.
I also notice that you can manipulate objects to be outside of the RTSS Display FIll. For example if you have the PositionX=600 and then use <P=-300,-300>. I'm not sure if this is intentional as the fill seems to 'grow' to fit elements otherwise.
Another small thing I've noted, not sure if this is a bug or a feature request: Let's say I set an alarm on my GPU usage. If I set the minimum to 90&, then it will alert me of GPU bottlenecks during gameplay (where I would expect almost 100% all the time). So that's good. But quite often, the GPU is sitting near idle, at 5%. So I could set an alarm for maximum 20%. Now, I would be alarmed only when GPU is between 20% and 90%. But if my maximum is less than my minimum, it won't work.
Neto's Simplify Dark skins are next level good. Really took the strain off my eyes while I did a side-line project. Somebody posted asking for a way to graph ping times, and I think it can be done. I have a powershell script which puts ping times in a variable, and another which can use variables to push data to perfmon. If it works with perfmon it should work with PerfCounter.dll. I just have to strap it all together.
Hey I just noticed the <FR> and <FT> macro tags what else have I missed LOL These are great. Are any other RTSS internal values exposed as macros like this?
Are there formatting tags for graph properties? For example is it possible to make one graph half the width of another graph?
Next version will also add %GPU1%..%GPU8% and %FullGPU1%...%FullGPU8% macro support for mGPU systems, in addition to currently existing %GPU% and %FullGPU% macro displaying currently selected GPU details.
Correct, that's by design. Text position tag is being applied and positioning takes place when the next text symbol is being displayed. So if you insert position tag explicitly before embedded object and want it to be moved, some invisible symbol must be embedded after the tag to apply new position (e.g. "\r").
That won't work because it is not a true min/max logic condition. Min/Max condition is (value > max) OR (value < min). What you're trying to achieve is (value > max) AND (value < min).
There are no macro tags besides <APP>, <FR> and <FT> supported on RTSS side. Old %FRAMERATE% and %FRAMETIME% macro (they were in use before introducing the tags) are also supported for compatibility.
No. Embedded object size is internally defined by itself, it cannot be altered by text formatting tags.
It's really impressive work man, well done. I can't find any issues other than the minor things mentioned above. I think there will be some very impressive custom OSDs in the coming months.
Thanks. I think I'll add special handling case for inverted min/max to allow specifying closed alarm range this way. With such mode we'll also need to visualize the range on the graph somehow (probably fill it) to allow seeing the difference between closed and open alarm range modes. Seeing just two threshold lines is not enough if both closed inner and open outer ranges can be defined.
Hi, I use several types of RADEON RX 4x0 and 5x0 and sometimes I find that AfterBurner can benefit if it can offer limit -200 mV Vcore for those cards. I hate using Trixx. This change is safe for the card, it is ready for VEGA, why not add it for RADEON RX 4x0 and 5x0? If I am addressing this request to the wrong thread, please tell me who should I contact.
ok, I'll extend the minimum to -200mV for Fiji and Polaris as well.
Is it just me, or does alignment 0 not actually work like 0? It seems there's something odd there....
Am I doing it right?
Nope, <A=0> is equal to <A>, it is alignment terminator tag. It is intended to close alignment tags pair and mark the end of text to be aligned. It cannot be used to specify independent alignment.
One more beta of MSI Afterburner 4.4.0 is available. There are some minor but very useful tweaks inside, most of them are GUI/usability related and were suggested and discussed a few posts above. It is release candidate and most likely we'll publish it as official 4.4.0 a few days later.
Changes list includes:
· Minimum voltage offset has been extended to -200mV for AMD Fiji and Ellesmere GPU families
· Improved drag and drop implementation for the list of active hardware monitoring graphs. Now it is possible to drag and drop items below the bottom edge of the list to move the graphs to the end of the list
· Improved multiple selection functionality in monitoring properties:
· When multiple graphs are selected you may press <Ctrl>+<M> inside group name edit field to apply group name changes synchronically to all selected graphs
· Now “Override graph name” and “Override group name” checkboxes are also affected by multiple selection functionality, so you may hold <Shift> when toggling those options to toggle it synchronically for all graphs or hold <Ctrl> when toggling those options to toggle it synchronically for all selected graphs
· Now group names support macro definitions (the same as prolog/epilog in OSD layout editor), so for example you may override group name for GPU temperature and set it to %GPU% to utomatically display your GPU name as a group name in OSD
· Added %GPU1%..%GPU8% and %FullGPU1%..%FullGPU8% macro names support for mGPU systems
· Now alarm zone is visualized on monitoring graph instead of displaying just the threshold. This simplifies visual identification of min/max thresholds
· Now you can define closed alarm range if specified maximum alarm threshold is less than minimum
P.S. MSI digital signatures are finally renewed, so both MSIAfterburner.exe and installer are signed by it instead of my own certificate.
Thanks a lot!