<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MariuszXC</id>
	<title>FlightGear wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MariuszXC"/>
	<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/Special:Contributions/MariuszXC"/>
	<updated>2026-04-09T04:14:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=141836</id>
		<title>Bindings</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=141836"/>
		<updated>2025-05-09T16:14:17Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: corrected a file name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Bindings''' define what happens when a user:&lt;br /&gt;
* [[Howto: Make a clickable panel|Clicks an object]] in the [[scenery]] or in an [[aircraft]].&lt;br /&gt;
* Presses a key/button on the keyboard or [[joystick]].&lt;br /&gt;
* Clicks a [[menu]] item&lt;br /&gt;
* Interacts with a dialog (clicking a button, selecting list entries etc)&lt;br /&gt;
&lt;br /&gt;
In other words, '''bindings''' are simply the term for '''actions''' that are associated with certain '''events''' in FlightGear. &lt;br /&gt;
&lt;br /&gt;
There are different types of events supported by various subsystems, but the resulting action that can be triggered will typically involve either a hard-coded command (a so called &amp;lt;code&amp;gt;fgcommand&amp;lt;/code&amp;gt;), or a block of scripted code (using [[Nasal]]). Bindings can be parameterized / customized using properties as arguments that are passed to each binding as a props.Node object.&lt;br /&gt;
And Nasal code can also be registered to become available as a dedicated &amp;lt;code&amp;gt;fgcommand&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
An object, button or key can have multiple bindings assigned to them. The bindings will be executed in the order in which they appear in the XML file. Bindings may contain [[conditions]] to make them conditionally executed. Each binding must specify a command node with its particular type, see below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Aircraft are free to override key bindings to fullfill their needs. The Space Shuttle for instance has no mixture control, so the m-key switches from translational to rotational hand controller.&lt;br /&gt;
The key only performs as mixture control if the plane has mixture settings and if the plane didn't re-assign the key - so dependent on what plane you try, it may or may not. Usually the aircraft-specific help spells it out.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=298436#p298436 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: trouble with m-key &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Thorsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Nov 9th, 2016 &lt;br /&gt;
  |added  =  Nov 9th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This article gives a small overview of frequently used bindings. Please refer to {{readme file|commands}} for additional information and refer to &amp;lt;code&amp;gt;$FG_SRC/Main/fg_commands.cxx&amp;lt;/code&amp;gt; for a complete list of available bindings.&lt;br /&gt;
&lt;br /&gt;
All given codes are examples, found on various places in the [[FlightGear]] package.&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
Below are some useful commands, some also with their equivalent Nasal call.  A more complete listing can be found in the readme file, {{readme file|commands}}.&lt;br /&gt;
&lt;br /&gt;
To learn more about adding your own custom &amp;lt;code&amp;gt;fgcommands&amp;lt;/code&amp;gt; to the source code, see [[Howto:Add new fgcommands to FlightGear]].&lt;br /&gt;
&lt;br /&gt;
=== replay ===&lt;br /&gt;
Toggles replay.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;replay&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;replay&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dialog-close ===&lt;br /&gt;
Closes the active dialog.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-close&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;dialog-close&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To close a specific dialog use for example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;dialog-close&amp;quot;, props.Node.new({&amp;quot;dialog-name&amp;quot;: &amp;quot;chat-full&amp;quot;}));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dialog-show ===&lt;br /&gt;
Shows a dialog, which should be present in &amp;lt;tt&amp;gt;''[[$FG_ROOT]]/gui/dialogs''&amp;lt;/tt&amp;gt;. In addition, from FlightGear 2.8, dialog files located in &amp;lt;tt&amp;gt;''&amp;lt;aircraft directory&amp;gt;/gui/dialogs''&amp;lt;/tt&amp;gt; are also loaded. This should be used for dialogs specific to a certain aircraft.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-show&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;dialog-name&amp;gt;location-in-air&amp;lt;/dialog-name&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;dialog-show&amp;quot;, props.Node.new({&amp;quot;dialog-name&amp;quot;: &amp;quot;location-in-air&amp;quot;}));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; dialog-name : The name of the dialog, as designated in its XML file.&lt;br /&gt;
&lt;br /&gt;
=== nasal ===&lt;br /&gt;
[[Nasal]] is frequently used for complicated systems, because it can execute virtually any function and allows running previously-defined Nasal functions.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;b777.afds.input(0,1);&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; script : The Nasal script to execute.&lt;br /&gt;
: {{inote|Make sure that the script does not conflict with the {{wikipedia|List of XML and HTML character entity references#Predefined entities in XML|predefined XML entities}}. If it does, you can either put it in a {{wikipedia|CDATA|CDATA section}} or use a non-interpreted version (e.g., &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).}}&lt;br /&gt;
&lt;br /&gt;
The {{func link|cmdarg()}} function is often useful in these situations to extract offset values passed to the binding. It returns the specific &amp;lt;tt&amp;gt;&amp;amp;lt;binding&amp;amp;gt;&amp;lt;/tt&amp;gt; node, which contains a &amp;lt;tt&amp;gt;&amp;amp;lt;setting&amp;amp;gt;&amp;lt;/tt&amp;gt; node at runtime if used in a joystick axis that represents the value of that axis.&lt;br /&gt;
&lt;br /&gt;
In joysticks and keyboard keys, the script is run in a specific namespace; please see [[Howto:Understand Namespaces and Methods]] for more information on namespaces.&lt;br /&gt;
&lt;br /&gt;
=== property-adjust ===&lt;br /&gt;
Increases or decreases a property's value with a given step. Maximum and minimum values are optional.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/settings/heading-bug-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;step&amp;gt;1&amp;lt;/step&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; property : Property that will be changed.&lt;br /&gt;
; step     : Amount to increase or decrease the property's value. Defaults to 0.&lt;br /&gt;
; offset   : Offset from the property's current value. If '''step''' is not given, this is multiplied by '''factor'''.&lt;br /&gt;
; factor   : When '''step''' is not given, '''offset''' is multiplied by this. Defaults to 1.&lt;br /&gt;
; min      : The minimum allowed value. Defaults to &amp;quot;no minimum.&amp;quot;&lt;br /&gt;
; max      : The maximum allowed value. Defaults to &amp;quot;no maximum.&amp;quot;&lt;br /&gt;
; wrap     : If true, the value will be wrapped when it passes min or max; both min and max must be present for this to work. Defaults to false.:{{Note|When wrap is set to true, the max parameter must be set to the desired maximum value + step or factor in order to work correctly !}}&lt;br /&gt;
; mask     :This argument accepts three value: &amp;lt;code&amp;gt;integer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;decimal&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; (default). &amp;lt;code&amp;gt;integer&amp;lt;/code&amp;gt; means that &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;offset * factor&amp;lt;/code&amp;gt; is applied to the part of the property's current value left of the decimal point first. &amp;lt;code&amp;gt;decimal&amp;lt;/code&amp;gt; does the same, but applies it to the part to the right of the decimal point. &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; simply applies it to the whole number. This is especially useful for COM / NAV radio frequency knobs - use &amp;lt;code&amp;gt;integer&amp;lt;/code&amp;gt; for the outer (big) knob and &amp;lt;code&amp;gt;decimal&amp;lt;/code&amp;gt; for the inner (small) knob.&lt;br /&gt;
&lt;br /&gt;
=== property-assign ===&lt;br /&gt;
One of the most important commands. It sets a property to a predefined value or to the value of another property.&amp;lt;ref&amp;gt;{{flightgear source&lt;br /&gt;
| path = src/Main/fg_commands.cxx&lt;br /&gt;
| line = 446&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/settings/target-speed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;autopilot/input/hdg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;instrumentation/heading-indicator/hdg-autopilot&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-cycle ===&lt;br /&gt;
Cycles between a list of values and assigns one to a property. The value-list can vary in length. If the current value is &amp;lt;code&amp;gt;value1&amp;lt;/code&amp;gt;, it will change to &amp;lt;code&amp;gt;value2&amp;lt;/code&amp;gt;; if it is &amp;lt;code&amp;gt;value2&amp;lt;/code&amp;gt;, it will change to &amp;lt;code&amp;gt;value3&amp;lt;/code&amp;gt;, and so on.  If the current value is not in the list, it will jump to the first one.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-cycle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/autobrake/setting&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;ARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;DISARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;OFF&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
As of May 2013, the command supports additional behaviours to simplify use with the new [[Knob_/_slider_animation|knob and slider animations]]. The wrapping behaviour can be disabled by setting &amp;lt;code&amp;gt;&amp;lt;wrap&amp;gt;0&amp;lt;/wrap&amp;gt;&amp;lt;/code&amp;gt;, and the command uses the &amp;lt;code&amp;gt;offset&amp;lt;/code&amp;gt; argument to select a direction of movement. This means a &amp;lt;code&amp;gt;property-cycle&amp;lt;/code&amp;gt; bound to a multi-position knob will function as expected for movement in both directions.&lt;br /&gt;
&lt;br /&gt;
=== property-interpolate ===&lt;br /&gt;
Interpolates to a value with a given rate of change (per second).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using &amp;lt;code&amp;gt;&amp;lt;rate&amp;gt;&amp;lt;/code&amp;gt;, one could use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;time&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;time&amp;gt;, to specify the time (in seconds) it takes to go to the new value, independent of the current value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;time&amp;gt;2&amp;lt;/time&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1, 0.5, -1 etc. --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also interpolate to a value given by a property.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/default-aileron-trim&amp;lt;/property&amp;gt;&amp;lt;!-- the value to interpolate to, is 0 --&amp;gt;&lt;br /&gt;
  &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-multiply ===&lt;br /&gt;
Multiply the value of a property by a given factor.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-multiply&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;0.5&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;-1&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;1&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;mask&amp;gt;all&amp;lt;/mask&amp;gt;&lt;br /&gt;
  &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''factor:''' the amount to multiply by.&lt;br /&gt;
*'''min:''' minimum value.&lt;br /&gt;
*'''max:''' maximum value.&lt;br /&gt;
*'''mask:'''&lt;br /&gt;
** '''integer:''' mutiply only left of the decimal point.&lt;br /&gt;
** '''decimal:''' multiply only the right of the decimal point.&lt;br /&gt;
** '''all:''' multiply the entire value.&lt;br /&gt;
*'''wrap:''' true if the value should be wrapped if it passes min/max. It is required to set both min and max in that case.&lt;br /&gt;
&lt;br /&gt;
=== property-randomize ===&lt;br /&gt;
Assigns a random value (between min and max) to a property.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-randomize&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/orientation/pitch-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-scale ===&lt;br /&gt;
Set the value of a property based on an axis, often used in [[joystick]] configuration files.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0.001&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;-1&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;power&amp;gt;3&amp;lt;/power&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''setting:''' the current input setting (usually a joystick axis from -1 or 0 to 1)&lt;br /&gt;
* '''offset:''' the offset to shift by, before applying the factor.&lt;br /&gt;
* '''factor:''' the factor to multiply by (use negative to reverse).&lt;br /&gt;
* '''squared:''' if true will square the resulting value (same as power=2).&lt;br /&gt;
* '''power:''' the resulting value will be taken to the power of this integer value (overrides squared).&lt;br /&gt;
&lt;br /&gt;
Remember: &amp;lt;code&amp;gt;(property ^ power + offset) * factor = result&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-swap ===&lt;br /&gt;
Swaps the values of two properties, useful for radio panels.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-swap&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/selected-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/standby-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-toggle ===&lt;br /&gt;
Toggles the value of a property on each click, between &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;(1&amp;lt;/code&amp;gt;) and &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Or - if defined - it toggles between two custom values:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;2&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;3&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===request-metar ===&lt;br /&gt;
{{cquote|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;request-metar&amp;quot;, props.Node.new({&amp;quot;path&amp;quot;: &amp;quot;/foo/mymetar&amp;quot;, &amp;quot;station&amp;quot;: &amp;quot;LOWI&amp;quot;}));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you pass an existing path, the station ID will be updated, and if you pass the same station ID as before, no additional request is made. As usual for metar-properties, there's a time-to-live and valid flags you can check, and the metar refreshes automatically every 900 seconds. You can also write to the station ID directly to change station, update the time-to-live, and wait for the valid signal.&lt;br /&gt;
&lt;br /&gt;
There's also an unregister command ('clear-metar') to cancel the binding into the property tree.&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg38372.html|title=&amp;lt;nowiki&amp;gt;[Flightgear-devel] Requesting arbitrary metar&amp;lt;/nowiki&amp;gt;|author=James Turner|date=Sun, 23 Sep 2012 08:56:48 -0700}}&amp;lt;/ref&amp;gt;|James Turner}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki ===&lt;br /&gt;
* [[Conditions]]&lt;br /&gt;
* [[Howto:Make a clickable panel]]&lt;br /&gt;
* [[Howto:Reassign keyboard bindings]]&lt;br /&gt;
&lt;br /&gt;
=== Forum topics ===&lt;br /&gt;
* {{forum link|t=37443|title=Order of multiple bindings}}&lt;br /&gt;
* {{forum link|t=37447|title=Amending to key bindings}} - Partially about indices (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;binding n=&amp;quot;&amp;lt;index&amp;gt;&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) for bindings.&lt;br /&gt;
&lt;br /&gt;
=== Readme file ===&lt;br /&gt;
* {{readme file|commands}}&lt;br /&gt;
&lt;br /&gt;
=== Source ===&lt;br /&gt;
Note that many commands are defined elsewhere. The readme file has a more complete listing.&lt;br /&gt;
&lt;br /&gt;
* {{flightgear source|path=src/Main/fg_commands.hxx}}&lt;br /&gt;
* {{flightgear source|path=src/Main/fg_commands.cxx}}&lt;br /&gt;
&lt;br /&gt;
* {{simgear source|path=simgear/structure/commands.hxx}}&lt;br /&gt;
* {{simgear source|path=simgear/structure/commands.cxx}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:FlightGear keyboard]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Developing_and_debugging_Nasal_code&amp;diff=141760</id>
		<title>Developing and debugging Nasal code</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Developing_and_debugging_Nasal_code&amp;diff=141760"/>
		<updated>2025-04-21T19:37:23Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Debugging */  - add link to Wiki entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Nasal Navigation}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Developing and debugging in Nasal==&lt;br /&gt;
===Developing Nasal code===&lt;br /&gt;
Because code in the Nasal directory is parsed only at FlightGear startup, testing and debugging Nasal code can be slow and difficult.&lt;br /&gt;
&lt;br /&gt;
FlightGear provides a couple of ways to work around this issue:&lt;br /&gt;
&lt;br /&gt;
====Nasal Console====&lt;br /&gt;
&lt;br /&gt;
The Nasal Console is available in FlightGear's menu (Debug/Nasal Console).  Selecting this menu opens a Nasal Console dialog.&lt;br /&gt;
&lt;br /&gt;
This dialog has several tabs, of which each can hold separate Nasal code snippets, all of which are saved on exit&lt;br /&gt;
and reloaded next time. This is useful for little tests, or for executing code for which writing a key binding is just too much&lt;br /&gt;
work, such as &amp;quot;props.dump(props.globals)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
If you want to add more tabs (radio buttons in the Nasal Console dialog) to hold more code samples, just add more &amp;amp;lt;code&amp;amp;gt; nodes to autosave.xml.&lt;br /&gt;
&lt;br /&gt;
[[Nasal Console]]&lt;br /&gt;
&lt;br /&gt;
====Loading/reloading Nasal code without re-starting FlightGear====&lt;br /&gt;
A common problem in testing and debugging Nasal programs is that each testing step requires stopping and re-starting FlightGear, a slow process.&lt;br /&gt;
&lt;br /&gt;
Below is described a technique for loading and executing a Nasal file while FlightGear is running.  FlightGear will parse the file, display any errors in the FlightGear console window, and then execute the code as usual.&lt;br /&gt;
&lt;br /&gt;
Using this technique, you can start FlightGear, load the Nasal code you want to test observe any errors or test functionality as you wish, make changes to the Nasal file, reload it to observe parse errors or change in functionality, and so on to repeatedly and quickly run through the change/load/parse/test cycle without needing to re-start FlightGear each time.&lt;br /&gt;
&lt;br /&gt;
The key to this technique is the function io.load_nasal(), which loads a nasal file into a nasal namespace. &lt;br /&gt;
&lt;br /&gt;
Step-by-step instructions showing how to use this technique to load, parse, and test a Nasal file while FlightGear is running:&lt;br /&gt;
&lt;br /&gt;
=====Create the Nasal file to test=====&lt;br /&gt;
Create a text file named [[$FG_ROOT]]/foo/test.nas with this text:&lt;br /&gt;
  &lt;br /&gt;
  print(&amp;quot;hi!&amp;quot;);&lt;br /&gt;
  var msg=&amp;quot;My message.&amp;quot;;&lt;br /&gt;
  var hello = func { print(&amp;quot;I'm the test.hello() function&amp;quot;) }&lt;br /&gt;
&lt;br /&gt;
Notes: You can create the file in any directory you wish, as long as Nasal can read the directory--but the file IOrules in the Nasal directory restricts which directories Nasal may read and write from.  &lt;br /&gt;
&lt;br /&gt;
You can give the file any name and extension you wish, though it is generally most convenient to use the .nas extension with Nasal files.&lt;br /&gt;
&lt;br /&gt;
=====Load the file and test=====&lt;br /&gt;
Start FlightGear.  You can import the file above into FlightGear by typing the following into the Nasal Console dialog and executing the code:&lt;br /&gt;
&lt;br /&gt;
  io.load_nasal(getprop(&amp;quot;/sim/fg-root&amp;quot;) ~ &amp;quot;/foo/test.nas&amp;quot;, &amp;quot;example&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
getprop(&amp;quot;/sim/fg-root&amp;quot;) gets the root directory of the FlightGear installation, ~ &amp;quot;/foo/test.nas&amp;quot; appends the directory and filename you created.  The final variable &amp;quot;example&amp;quot; tells the namespace to load for the Nasal file.&lt;br /&gt;
&lt;br /&gt;
You'll see the message &amp;quot;hi!&amp;quot; on the terminal, and have function &amp;quot;example.hello()&amp;quot; immediately available. You can, for instance, type &amp;quot;example.hello();&amp;quot; into one of the Nasal console windows and press &amp;quot;Execute&amp;quot; to see the results; similarly you could execute &amp;quot;print (example.msg);&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you find errors or want to make changes, simply make them in your text editor, save the file, and execute the io.load_nasal() command again in the Nasal Console to re-load the file with changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It's worth noting that Nasal code embedded in XML GUI dialog files can be reloaded by using the &amp;quot;debug&amp;quot; menu (&amp;quot;reload GUI&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
You may also want to check out the remarks on [[Nasal scripting language#Memory management|Memory management]].&lt;br /&gt;
&lt;br /&gt;
==== Managing timers and listeners ====&lt;br /&gt;
&lt;br /&gt;
Note: If your Nasal program sets listeners, timer loops, and so on, they will remain set even when the code is reloaded, and reloading the code will set additional listeners and timer loops.  &lt;br /&gt;
&lt;br /&gt;
This can lead to extremely slow framerates and unexpected behavior.  For timers you can avoid this problem by using the loopid method (described above); for listeners you can create a function to destroy all listeners your Nasal program creates, and call that function before reloading the program.  (And cleaning up timer loops and listeners is a best practice for creating Nasal programs in FlightGear regardless.)&lt;br /&gt;
&lt;br /&gt;
The same problem may occur while resetting or re-initializing parts of FlightGear if your code isn't prepared for this. And obviously this applies in particular also to any worker threads you may have started, too!&lt;br /&gt;
&lt;br /&gt;
For complex Nasal scripts with many timers and listeners, it is therefore generally a very good idea to implement special callbacks so that your scripts can respond to the most important simulator &amp;quot;signals&amp;quot;, this can be achieved by registering script-specific listeners to signals like &amp;quot;reinit&amp;quot; or &amp;quot;freeze&amp;quot; (pause): the corresponding callbacks can then suspend or re-initialize the Nasal code by suspending listeners and timers. &lt;br /&gt;
Following this practice helps ensure that your code will behave properly even during simulator resets.&lt;br /&gt;
&lt;br /&gt;
In other words, it makes sense to provide a separate high-level controller routine to look for important simulator events and then pause or re-initialize your main Nasal code as required.&lt;br /&gt;
&lt;br /&gt;
If you are using [[Nasal scripting language#System-wide Nasal code|System-wide Nasal modules]], you should register listeners to properly re-initialize and clean up your Nasal code.&lt;br /&gt;
&lt;br /&gt;
In its simplest form, this could look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var cleanup = func {}&lt;br /&gt;
 setlistener(&amp;quot;/sim/signals/reinit&amp;quot;, cleanup);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will invoke your &amp;quot;cleanup&amp;quot; function, whenever the &amp;quot;reinit&amp;quot; signal is set by the FlighGear core.&lt;br /&gt;
&lt;br /&gt;
Obviously, you now need to populate your cleanup function with some code, too.&lt;br /&gt;
&lt;br /&gt;
One of the easiest ways to do this, is removing all listeners/timers manually here, i.e. by adding calls to removelistener():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var cleanup = func {&lt;br /&gt;
  removelistener(id1);&lt;br /&gt;
  removelistener(id2);&lt;br /&gt;
  removelistener(id3);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would ensure that the corresponding listeners would be removed once the signal is triggered.&lt;br /&gt;
&lt;br /&gt;
Now, keeping track of all listeners manually is tedious.&lt;br /&gt;
&lt;br /&gt;
On the other hand, you could just as well use a vector of listener IDs here, and then use a Nasal foreach loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var cleanup = func(id_list) {&lt;br /&gt;
  foreach(var id; id_list)&lt;br /&gt;
   removelistener(id);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obviously, this would require that you maintain a list of active listeners, too - so that you can actually pass a list of IDs to the cleanup function.&lt;br /&gt;
&lt;br /&gt;
This is one of those things that can be easily done in Nasal, too - just by introducing a little helper wrapper:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var id_list=[];&lt;br /&gt;
 var store_listener = func(id) append(id_list,id);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only thing required here, would be replacing/wrapping the conventional &amp;quot;setlistener&amp;quot; call with calls to your helper:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 store_listener( setlistener(&amp;quot;/sim/foo&amp;quot;) );&lt;br /&gt;
 store_listener( setlistener(&amp;quot;/foo/bar&amp;quot;) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you were to do this consistently across all your Nasal code, you'd end up with a high level way to manage all your registered listeners centrally.&lt;br /&gt;
&lt;br /&gt;
You could further generalize everything like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var id_list=[];&lt;br /&gt;
 var store_listener = func(property) append(id_list,setlistener(property) );&lt;br /&gt;
 store_listener(&amp;quot;/sim/foo/bar&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will ensure that any &amp;quot;store_listener&amp;quot; call stores the listener's ID in the id_list vector, which makes it possible to easily remove all listeners, too:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var cleanup_listeners = func {&lt;br /&gt;
  foreach(var l; id_list) &lt;br /&gt;
    remove_listener(l);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, you could just as well &amp;quot;overload&amp;quot; functions like settimer() setlistener() in your script, this can be easily achieved by saving a handle to the original functions and then overriding them in your script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var original_settimer = settimer;&lt;br /&gt;
var original_setlistener = setlistener;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, you have handles stored to the original functions, to make sure that you are referring to the correct version, you can also refer to the &amp;quot;globals&amp;quot; namespace.&lt;br /&gt;
&lt;br /&gt;
Obviously, it makes sense to only store and clean up those listeners that are not themselves required to handle initialization/resets, otherwise you'd remove the listeners for your init routines, too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, you can easily override settimer/setlistener in your script:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var original_settimer = settimer;&lt;br /&gt;
var original_setlistener = setlistener;&lt;br /&gt;
&lt;br /&gt;
var settimer = func(function, time, realtime=0) {&lt;br /&gt;
 print(&amp;quot;Using your own settimer function now&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var setlistener = func(property, function, startup=0, runtime=1) {&lt;br /&gt;
  print(&amp;quot;Using your own setlistener function now!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to call the old implementation, just use the two handles that you have stored:&lt;br /&gt;
&lt;br /&gt;
* original_settimer&lt;br /&gt;
* original_setlistener&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var original_settimer = settimer;&lt;br /&gt;
var original_setlistener = setlistener;&lt;br /&gt;
&lt;br /&gt;
var settimer = func(function, time, realtime=0) {&lt;br /&gt;
 print(&amp;quot;Using your own settimer function now&amp;quot;);&lt;br /&gt;
 original_settimer(function, time, realtime);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var setlistener = func(property, function, startup=0, runtime=1) {&lt;br /&gt;
  print(&amp;quot;Using your own setlistener function now!&amp;quot;);&lt;br /&gt;
  original_setlistener(property, function, startup, runtime);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So this is a very simple and elegant way to wrap and override global behavior. So that you can easily implement script-specific semantics and behavior, i.e. to automatically store handles to registered listeners:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var original_settimer = settimer;&lt;br /&gt;
var original_setlistener = setlistener;&lt;br /&gt;
&lt;br /&gt;
var cleanup_listeners = [];&lt;br /&gt;
&lt;br /&gt;
var settimer = func(function, time, realtime=0) {&lt;br /&gt;
 print(&amp;quot;Using your own settimer function now&amp;quot;);&lt;br /&gt;
 original_settimer(function, time, realtime);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var setlistener = func(property, function, startup=0, runtime=1) {&lt;br /&gt;
  print(&amp;quot;Using your own setlistener function now!&amp;quot;);&lt;br /&gt;
  var handle = original_setlistener(property, function, startup, runtime);&lt;br /&gt;
  append(cleanup_listeners, handle);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus, you can now have a simple &amp;quot;cleanup&amp;quot; function which processes all listeners stored in &amp;quot;cleanup_listeners&amp;quot; using a foreach loop and removes them:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var original_settimer = settimer;&lt;br /&gt;
var original_setlistener = setlistener;&lt;br /&gt;
&lt;br /&gt;
var cleanup_listeners = [];&lt;br /&gt;
&lt;br /&gt;
var remove_listeners = func {&lt;br /&gt;
 foreach(var l; cleanup_listeners) {&lt;br /&gt;
  removelistener(l);&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var settimer = func(function, time, realtime=0) {&lt;br /&gt;
 print(&amp;quot;Using your own settimer function now&amp;quot;);&lt;br /&gt;
 original_settimer(function, time, realtime);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var setlistener = func(property, function, startup=0, runtime=1) {&lt;br /&gt;
  print(&amp;quot;Using your own setlistener function now!&amp;quot;);&lt;br /&gt;
  var handle = original_setlistener(property, function, startup, runtime);&lt;br /&gt;
  append(cleanup_listeners, handle);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only thing that's needed now to handle simulator resets, is registering an &amp;quot;anonymous&amp;quot; listener which triggers your &amp;quot;remove_listeners&amp;quot; callback upon simulator reset:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  _setlistener( &amp;quot;/sim/signals/reinit&amp;quot;, remove_listeners );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note how we're using the low level _setlistener() call directly here, to avoid adding the listener id to the &amp;quot;cleanup&amp;quot; vector, which would mean that we're also removing this listener - i.e. the cleanup would then only work once.&lt;br /&gt;
&lt;br /&gt;
Now, you'll probably have noticed that it would make sense to consider wrapping all these helpers and variables inside an enclosing helper class, this can be accomplished in Nasal using a hash. &lt;br /&gt;
&lt;br /&gt;
This would enable you to to implement everything neatly organized in an object and use RAII-like patterns to manage Nasal resources like timers, listeners and even threads.&lt;br /&gt;
&lt;br /&gt;
===Debugging===&lt;br /&gt;
The file [[Nasal library/debug|debug.nas]], included in the Nasal directory of the FlightGear distribution, has several functions useful for debugging Nasal code.  These functions are available to any Nasal program or code executed by FlightGear.&lt;br /&gt;
&lt;br /&gt;
Aside from those listed below, several other useful debugging functions are found in debug.nas; see the debug.nas file for the list of functions and explanation. You may also refer to this Wiki entry: [[Nasal library/debug]].&lt;br /&gt;
&lt;br /&gt;
Note that the debug module makes extensive use of ANSI terminal color codes.  These create colored output on Linux/Unix systems but on other systems they may add numerous visible control codes.  To turn off the color codes, go to the internal property tree and set&lt;br /&gt;
&lt;br /&gt;
 /sim/startup/terminal-ansi-colors=0&lt;br /&gt;
&lt;br /&gt;
Or within a Nasal program:&lt;br /&gt;
&lt;br /&gt;
 setprop (&amp;quot;/sim/startup/terminal-ansi-colors&amp;quot;,0);&lt;br /&gt;
&lt;br /&gt;
====debug.dump====&lt;br /&gt;
 debug.dump([&amp;lt;variable&amp;gt;])             ... dumps full contents of variable or of local variables if none given&lt;br /&gt;
 &lt;br /&gt;
The function debug.dump() dumps the contents of the given variable to the console. On Unix/Linux this is done with some syntax coloring. For example, these lines&lt;br /&gt;
&lt;br /&gt;
  var as = props.globals.getNode(&amp;quot;/velocities/airspeed-kt&amp;quot;, 1);&lt;br /&gt;
  debug.dump(as);&lt;br /&gt;
&lt;br /&gt;
would output&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/velocities/airspeed-kt=1.021376474393101 (DOUBLE; T)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;T&amp;quot; means that it's a &amp;quot;tied&amp;quot; property. The same letters are used here as in the property-browser. The angle brackets seem superfluous, but are useful because debug.dump() also outputs compound data types, such as vectors and hashes. For example:&lt;br /&gt;
&lt;br /&gt;
  var as = props.globals.getNode(&amp;quot;/velocities/airspeed-kt&amp;quot;, 1);&lt;br /&gt;
  var ac = props.globals.getNode(&amp;quot;/sim/aircraft&amp;quot;, 1);&lt;br /&gt;
  var nodes = [as, ac];&lt;br /&gt;
  var hash = { airspeed_node: as, aircraft_name: ac, all_nodes: nodes };&lt;br /&gt;
  debug.dump(hash);&lt;br /&gt;
&lt;br /&gt;
yields:&lt;br /&gt;
&lt;br /&gt;
  { all_nodes : [ &amp;lt;/velocities/airspeed-kt=1.021376474393101 (DOUBLE; T)&amp;gt;,&lt;br /&gt;
  &amp;lt;/sim/aircraft=&amp;quot;bo105&amp;quot; (STRING)&amp;gt; ], airspeed_node : &amp;lt;/velocities/airspe&lt;br /&gt;
  ed-kt=1.021376474393101 (DOUBLE; T)&amp;gt;, aircraft_name : &amp;lt;/sim/aircraft=&amp;quot;bo&lt;br /&gt;
  105&amp;quot; (STRING)&amp;gt; }&lt;br /&gt;
&lt;br /&gt;
====debug.backtrace====&lt;br /&gt;
  debug.backtrace([&amp;lt;comment:string&amp;gt;]}  ... writes backtrace with local variables&lt;br /&gt;
  debug.bt                             ... abbreviation for debug.backtrace&lt;br /&gt;
&lt;br /&gt;
The function debug.backtrace() outputs all local variables of the current function and all parent functions.&lt;br /&gt;
&lt;br /&gt;
====debug.breakpoint====&lt;br /&gt;
If you need a backtrace controlable via the property browser at runtime, this is for you.&lt;br /&gt;
see [[Nasal library/debug]]&lt;br /&gt;
&lt;br /&gt;
====debug.benchmark====&lt;br /&gt;
debug.benchmark(&amp;lt;label:string&amp;gt;, &amp;lt;func&amp;gt; [, &amp;lt;repeat:int&amp;gt;])&lt;br /&gt;
 ... runs function &amp;lt;repeat&amp;gt; times (default: 1) and prints execution time in seconds,prefixed with &amp;lt;label&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This is extremely useful for benchmarking pieces of code to determin &lt;br /&gt;
====debug.exit====&lt;br /&gt;
  debug.exit()                         ... exits fgfs&lt;br /&gt;
&lt;br /&gt;
[[Category:Nasal]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_news&amp;diff=140940</id>
		<title>Canvas news</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_news&amp;diff=140940"/>
		<updated>2024-11-11T21:12:43Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Skia talks */ fix small typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Canvas Navigation}}&lt;br /&gt;
&lt;br /&gt;
This page is primarily intended to keep track of Canvas related core/fgdata changes and discussions, i.e. mainly of interest to people who are not able to follow the forum/devel list regularly, but who may still want to stay up to date regarding future Canvas developments (i.e. not including fgaddon).&lt;br /&gt;
&lt;br /&gt;
Everybody is invited to help contribute to maintain this page and provide up-to-date information. Also, quoting/referincing devel/forum list talks is actively encouraged, too - to help provide the corresponding pointers back to the original discussion threads: [[Instant-Cquotes]].&lt;br /&gt;
&lt;br /&gt;
{{Canvas Roadmap}}&lt;br /&gt;
&lt;br /&gt;
== 2023 ==&lt;br /&gt;
=== Pango Text ===&lt;br /&gt;
{{Stub}}&lt;br /&gt;
[[File:Pango-text-03-2023.png|thumb|we'd use the Pango library with it's dependencies, write our ownrenderer and set_renderer(custom_renderer) on the rendering context ?If you think this is a good idea I'll look into it, if not - I have a pureOSG solution working, for fill color at least&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37791568/&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
On the long hand we need to implement simple, GTK like markup support for&lt;br /&gt;
canvas.Text, mainly for easy selection handling (I have that working for&lt;br /&gt;
single-line text, but it's got visual artifacts and it would be incredibly&lt;br /&gt;
complicated to make it work for multi-line text), but there are other use&lt;br /&gt;
cases too (like syntax highlighting in the Nasal console, etc.).&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37781788/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successfully subclassed Pango::Renderer, and&lt;br /&gt;
I'm also successfully showing an osg::Texture2D as element on the canvas,&lt;br /&gt;
but when I try to copy an osgText::Glyph onto that texture, instead of a&lt;br /&gt;
glyph I get a noise texture instead … the other issue I'm having is some&lt;br /&gt;
ponter problem (a smart pointer of one CanvasPangoText instance only&lt;br /&gt;
getting deleted upon the creation of the next instance, which leads to it&lt;br /&gt;
wanting to delete something that was already deleted !?).&lt;br /&gt;
On both problems I'm somewhat stuck, so it would be great if @James Turner&lt;br /&gt;
&amp;lt;ja...@fl...&amp;gt;  or @Hooray could take a look - the latest code is&lt;br /&gt;
available at git.code.sf.net/u/thefgfseagle/simgear.git / branch&lt;br /&gt;
canvas_pangotext, in&lt;br /&gt;
simgear/canvas/elements/{CanvasPangoText,PangoRendererCanvas}.cxx&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37795860/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the new element can be tested with the following Nasal code, after&lt;br /&gt;
checking out the canvas_pangotext branch from&lt;br /&gt;
git.code.sf.net/u/thefgfseagle/fgdata &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37795864/&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
w = canvas.Window.new([200, 200], &amp;quot;dialog&amp;quot;);&lt;br /&gt;
c = w.createCanvas();&lt;br /&gt;
g = c.createGroup();&lt;br /&gt;
t = g.createChild(&amp;quot;pangotext&amp;quot;);&lt;br /&gt;
t.setMarkup(&amp;quot;&amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt;&amp;quot;);&lt;br /&gt;
w.show();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PUI Emulation ===&lt;br /&gt;
{{Main article|PUI}}&lt;br /&gt;
&lt;br /&gt;
[[File:Gc-monitoring-via-new-canvas-proptree-widget.png|thumb|Screen shot showing a [[Canvas GUI]] dialog rendering the new [[Property browser]] dialog based on porting the legacy [[PUI]] widget, showing GC stats]]&lt;br /&gt;
01/2023: James slowly working on creating the pop-up menu and combo-box widgets [...] We need to figure out the split of DefaultStyle.nas, but James is very keen to ensure we add a second style alongside the default, before we change much here. &lt;br /&gt;
&lt;br /&gt;
Regarding styling, James is worried about us ending up putting code into the wrong side of the widget / Style split, if we don’t have a second alternative style implementation to ‘keep us honest’&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37756178/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We really have two kinds of ’styles’&lt;br /&gt;
&lt;br /&gt;
* tweaking margins, font sizes, colours etc should indeed be done in XML as you wrote : this is also analogous to styles in the PUI sense&lt;br /&gt;
&lt;br /&gt;
* making radically different ways of presenting the same logical widgets: eg text label of checkbox in a different position relative to the button (of Surface vs Material vs iOS style, if you know web/mobile UIs)&lt;br /&gt;
&lt;br /&gt;
For the second kind we would use a different Nasal style implementation and that’s the abstraction I think it is very important to maintain. It of course going to be a lot of work to make additional styles this way but it’s a very valuable feature to keep the possiblity, since it enables alternate UIs for user accessibility or different presentation modes such as VR.&lt;br /&gt;
&lt;br /&gt;
What I don’t want to do is add lots of widgets assuming we only care about DefaultStyle.nas, and then have an impossible mountain to climb when someone needs an alternate Nasal style. We don’t have to make a complete alternate style now, but I don’t want to take shortcuts the make it impossible in the future. So I want to really think carefully about what is widget code and what is style code. &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37756261/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One of the major things slowing down James' work on the popup-menu and combo box is time to restart the simulator for each change, he is looking for some solution to re-load the widget Nasal code independently. &amp;lt;ref&amp;gt;&amp;lt;https://sourceforge.net/p/flightgear/mailman/message/37756183/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
James has done about 75% (hah!) of the C++ work to enable live reloading of modules this way, but unfortunately there are some code paths that would become crashy if you use the feature for the Canvas: because it would reference the ‘old’ (pre-reload) Nasal code, and not the new one, and therefore you’d get a weird mix of old and new, and then just crash the sim. To fix it properly I need to track down those places that store a reference to Canvas and give them a re-init method, so we don’t keep the stale references.&lt;br /&gt;
&lt;br /&gt;
The general non-fun-ness of that kind of debugging is why I’ve been making such slow progress on my PUI replacement widgets recently &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37756263/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2022 ==&lt;br /&gt;
=== ListView Widget ===&lt;br /&gt;
[[File:Logbook-v.1.1.0.png|thumb]]&lt;br /&gt;
For the [[Logbook Add-on]], PlayeRom implemented a ListView canvas widget that can be reused by others, so he sent a merge request with this widget.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37754894/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
see also {{Merge-request|project=fgdata|id=304|text=Merge request:Canvas ListView implementation}}&lt;br /&gt;
=== Tab Widget ===&lt;br /&gt;
[[File:Canvas TabWidget example.png|thumb]]&lt;br /&gt;
[[File:TabWidget.png|thumb|TheEagle's tab widget]]&lt;br /&gt;
FGFSEagle needed a tab widget for his C310, so he did a quick  implementation inspired&lt;br /&gt;
by FGAddon/trunk/Aircraft/f16/Nasal/canvas/gui/widgets/Tabs.nas.&lt;br /&gt;
&lt;br /&gt;
The plan is to add scrolling / reordering / closing support for the tabs later. &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37751388/ &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Learn more at [[Canvas snippets#Using_TabWidgets]]&lt;br /&gt;
&lt;br /&gt;
For the merge request, see see {{Merge-request|project=fgdata|id=303|text=Canvas tab widget implementation}}&lt;br /&gt;
&lt;br /&gt;
For the underlying idea, refer to: [[PUI#Replacement status]]&lt;br /&gt;
&lt;br /&gt;
=== Releasing Canvas textures ===&lt;br /&gt;
{{Stub}}&lt;br /&gt;
&lt;br /&gt;
we'd need some kind&lt;br /&gt;
of way to delete the texture without deleting the window, redrawing the&lt;br /&gt;
texture when the window is reopened ? Starts to sound complicated … but on&lt;br /&gt;
the other hand, all windows on the Extra 500 use a custom Window class&lt;br /&gt;
which does something similar … &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37719030/&amp;lt;/ref&amp;gt;&lt;br /&gt;
I've updated the code to directly hide the window when the close button is&lt;br /&gt;
pressed, and also fixed a bug which consisted of the windows automatically&lt;br /&gt;
showing (which is not desired when the window is constructed at startup and&lt;br /&gt;
should only be shown later). New patch attached.&lt;br /&gt;
As for memory usage, I did a test - 100 1000x1000 px canvas windows, all&lt;br /&gt;
with destroy_on_close = 0. constructing them didn't give a significant&lt;br /&gt;
increase in memory usage - only upon showing them all at once, the RAM&lt;br /&gt;
usage went up by 2 GB. that's quite a lot you might say, but 1) most&lt;br /&gt;
dialogs are not as big as that and 2) which user opens 100 dialogs in one&lt;br /&gt;
session ? In most cases it won't be more than 10 = 200 MB RAM (if all&lt;br /&gt;
dialogs were using this new behaviour) - and the default behaviour is to&lt;br /&gt;
destroy the window on closing anyways (destroy_on_close = 1 by default, you&lt;br /&gt;
got to explicitly set it to 0 to get the new behaviour, also to maintain&lt;br /&gt;
backwards compatibility), so I think this won't be an issue.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37719123/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What we’d ideally want is a C++ change so that hidden canvases release their texture memory : it’s created the first time the canvas is rendered, which is why the memory is fine until you actually show them.&lt;br /&gt;
&lt;br /&gt;
200MB memory is not great, but the bigger problem is the GPU-side memory : 200MB of VRAM is much more ‘valuable’ for textures than for keeping the backing store of hidden dialogs. So I would definitely say use this feature sparingly, until someone adds some C++ logic to destroy the backing texture for hidden canvas windows.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37720688/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this window behaviour one, I’ve applied it since it’s an opt-in change, but I suspect we may end reviewing this API a little, so I’d suggest not building lots of dialogs across different aircraft, which depend on this behaviour, until we get a bit more experience with it. &lt;br /&gt;
&lt;br /&gt;
So use it, gain some understanding, but maybe we discover in 6 months that it’s a bad idea and have to revert it. (That’s the worst case, but it is kind of a radical change in the lifetime / memory usage of the Canvas, so I just want to mention the worst possibility) I’m 90% sure we can keep this API, so long as we improve the C++ behaviour to release the texture / FBO memory of hidden canvases, which is a reasonable thing to do anyway, it just needs someone to have the time to implement that, and right now, I certainly don’t.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37720701/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replacing PUI ===&lt;br /&gt;
{{See also|PUI#Replacement_status}}&lt;br /&gt;
&lt;br /&gt;
Update 09/2022: The PUI replacement was going to be Qt but it started to get very complicated with changes in Qt 5.15 + Qt 6, so James is going with a more light-weight, Canvas-based, approach now.&lt;br /&gt;
&lt;br /&gt;
Qt added support for Vulkan / Metal / D3D starting in 5.15, but FlightGear / OpenSceneGraph can’t support those, so integrating the two renderers went from being ‘complicated but ok’  to ‘very very complicated’. &lt;br /&gt;
&lt;br /&gt;
So now James is going with something much more lightweight using some C++ compatibility code, some Nasal for styling and the existing widget rendering from Thomas Geymayer (TheTom) with some extensions and additions: some pieces are in FlightGear &amp;amp; FGData already. &lt;br /&gt;
&lt;br /&gt;
James has basic dialogs working okay but not the more complex ones and everything looks kind of ugly, he needs to improve the visual look before he shares screenshots to avoid everyone freaking out :) The disadvantage of this approach is James is far from expert at creating visual appearances this way, so it’s kind on unrewarding and slow for him. If someone likes messing with CSS-type styling, border-images and hover-states, ping him since we could probably move things also faster &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37701750/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The PUI limitations should be gone ‘soon’: actually James is now focused on getting dialogs working; on macOS we use a native menubar (not PUI) inside FG which can handle sub-menus just fine. &lt;br /&gt;
&lt;br /&gt;
If someone out there wants to work on the UI for menus / menubar part, just ping him directly, he can suggest some steps to start working that way. (Basically creating the view code in Nasal for menu items, menus and the menubar, and handling the different visual states of the above, such as an item being disabled, showing the keyboard shortcut, eliding too-long item names, hover feedback, timers to open menus / sub-menus on mouse-over: it’s all pretty standard stuff)&lt;br /&gt;
&lt;br /&gt;
This does *also* need C++ parts, because the internal menubar structure /also/ needs some additions to support sub-menus, and the add-ons themselves would likely need some tweaks in the XML to integrate with that. So in total there are quite a few changes in this ’simple’ request, but this is often the way with software development :)&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37701747/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Main article|pui2canvas}}&lt;br /&gt;
&lt;br /&gt;
In February 2022, James reported having something in progress locally, and that should even be something we can try in March/April 2022. Hopefully that’s quick enough, knowing it has been a long time coming.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37606439/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It’s split between Simgear (see classes with widget / layout in the name) and in FGData. (Eg widgets/Button.nas) To be able to use the existing dialog XML files un-modified (which is a design goal), James is extending the widget types with many additional ones (eg PUI has slider, dial, combo-box, checkbox, all of which need to be created - this is about 30% done and is the bit he's very slow at). Thomas’s widgets have a very good separation of API + state from appearance, so all styling is in its own file, and James is being very strict about maintaining this separation, so we also retain the re-styling feature of the PUI UI, which many people also rely on. This does make the process of adding new widgets more complex, however. &lt;br /&gt;
&lt;br /&gt;
The other thing is to preserve all the layouting : James has added a grid layout to Simgear, since that is supported by the existing PUI code (even though the layouts are not actually part of PUI itself). The problem is getting the sizing / hinting of all the widgets to match the PUI values, so that dialogs look approximately the same under the new UI as they did with PUI; again this a design goal so that all existing dialogs in aircraft and add-ons, which we can’t update, continue to work and be usable. Debugging that is also proving quite tricky, since there’s all kinds of hard-coded assumptions built into PUI widgets about pixels, font-sizes etc which are not true in the new system.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37701792/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMLDialog.nas ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Main article|pui2canvas}}&lt;br /&gt;
&lt;br /&gt;
There's now an XML to Nasal bridge, to keep PUI dialogs working (Disabled by a CMake option)&lt;br /&gt;
This is implemented on top of the [[Canvas]] system.&lt;br /&gt;
&lt;br /&gt;
James reported having something in progress locally, and that should even be something we can try in 2022. Hopefully that’s quick enough, knowing it has been a long time coming.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37606439/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new code builds equivalent C++ objects to what the [[PUI]] dialogs build, with properties exposed to [[Nasal]].&lt;br /&gt;
&lt;br /&gt;
Peer objects are created by Nasal [[callbacks]], which can implement the various dialog functions needed to keep compatibility, especially the ‘update’ and ‘apply’ hooks.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/flightgear/ci/cbd5ef9e7b8f433dbc1ba97bae7d7cfc894e7cef/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the following [[Building using CMake|cmake option]] to enable this code: &amp;lt;code&amp;gt;-DENABLE_PUICOMPAT=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new Compatibility files can now be found in $FG_SRC/GUI:&lt;br /&gt;
&lt;br /&gt;
* {{flightgear file|src/GUI/FGPUICompatDialog.cxx }}&lt;br /&gt;
* {{flightgear file|src/GUI/FGPUICompatDialog.hxx }}&lt;br /&gt;
* {{flightgear file|src/GUI/PUICompatObject.cxx  }}&lt;br /&gt;
&lt;br /&gt;
The corresponding Nasal/Canvas module to dynamically &amp;quot;translate&amp;quot; legacy PUI/XML dialogs into Canvas dialogs (at runtime), is to be found in {{fgdata file|Nasal/gui/XMLDialog.nas}} &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/fgdata/ci/fe7c87b21a69f88ddb87d89453c48d12b69660e2/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Core Profile support / replacing ShivaVG ===&lt;br /&gt;
[[File:ShivaVG.jpg|thumb|Here is a comparison between ShivaVG and ShaderVG.Look at the Canvas Dialog top left and particularly the vertical airspeed bars &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37610774/&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[File:ShaderVG.jpg|thumb|Here is a comparison.Look at the Canvas Dialog top left and particularly the vertical airspeed bars&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37610774/&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
{{Main article|Shiva Alternatives}}&lt;br /&gt;
We need to remove [[PUI]] and change the [[Canvas]] not to use ShivaVG ([[Canvas Path]] back end), to be ES2 compatible or Core-profile compatible.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36194973/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To support [[Canvas]] on [[OpenGL]] [[FlightGear and OpenGL ES|Core profile]], the plan is to migrate from [[Shiva]] to ‘something else’ which implements the required drawing operations. Unfortunately two of the probable solutions (Skia from Chrome and Cairo from Gtk) are both enormous and a pain to deploy on macOS and Windows. &lt;br /&gt;
&lt;br /&gt;
{{See also|Unifying the 2D rendering backend via canvas}}&lt;br /&gt;
As part of the Core profile migration, we need to replace ShivaVG (which is the functional guts of Path.cxx) with a shader based implementation, ideally NanoVG, although Scott has indicated this might not be as easy as originally hoped. &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37605458/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Early experiments (patch [https://sourceforge.net/p/flightgear/mailman/message/37610741/]) in 02/2022 with ShaderVG were promising and suggest, that it ‘kind of sort of’ works, that’s already less work than integrating NanoVG.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37610750/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the time being, it's not a one on one drop in replacement  but it works quite nicely: &lt;br /&gt;
* For one the x,y positions are off comapared to ShivaVG making things  slightly bigger (maybe too big for the screen).&lt;br /&gt;
* and one issue with the &amp;quot;title bar&amp;quot; being opaque.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/37610740/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2021 ==&lt;br /&gt;
=== Moving Canvas Rendering to a separate OpenGL Context ===&lt;br /&gt;
{{Main article|Howto:New Canvas Execution Model}}&lt;br /&gt;
[[File:Pbuffer-based-canvas-startup.png|thumb|fgfs initialization with pbuffer based addCamera() modification in renderer.cxx to create canvas cameras in a dedicated GL context]]&lt;br /&gt;
&lt;br /&gt;
[[File:Pbuffer-based-canvas-cams.png|thumb|pbuffer based canvas cams used for offscreen rendering, but also to move canvas rendering out of the main loop (in conjunction with aggressive OSG threading via ) &lt;br /&gt;
This shows disabled context sharing and use a separate osg::Image to copy the texture from one GL context to another (the CPU being the bottleneck, unless we can use a shader or PBO to do this)]]&lt;br /&gt;
&lt;br /&gt;
[[File:Fgfs-20210904184748.png|thumb|This screen shot shows the FG1000 running in a patched fgfs version where Canvas Cameras are attached to an OpenGL context running in another thread. Synchronization with the main thread is not accomplished using a shared context, but instead using an osg::Image (which considerably slows down things, as can be seen in the stats above)]]&lt;br /&gt;
&lt;br /&gt;
Early experiments  moving Canvas rendering out of the main loop by using aggressive OSG threading in conjunction with a separate GL context for Canvas cams, and subsequently, with also moving Nasal (and Property Tree I/O) out of the main loop by using a dedicated thread per Canvas [Texture], probably with its own FGNasalSys instance and related subsystem machinery (mainly, events/timers).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dedicated prerender cams ===&lt;br /&gt;
{{See also|Post_FlightGear_2020.2_LTS_changes#Canvas}}&lt;br /&gt;
2021-08-27: Fernando has begun working on moving Canvas cameras out of the scene graph into dedicated PRERENDER cams in the viewer (This was a long-standing issue where Canvas cameras were rendered multiple times, once per slave camera. In the case of the Classic pipeline they were being rendered twice.), see:&lt;br /&gt;
* {{flightgear commit|83b0a3}}&lt;br /&gt;
* {{simgear commit|a97e14}}&lt;br /&gt;
&lt;br /&gt;
== 2020 ==&lt;br /&gt;
=== Canvas EFIS Framework ===&lt;br /&gt;
&lt;br /&gt;
The '''canvas EFIS framework''' (created by jsb) is by-product of the EFIS development&lt;br /&gt;
done for the CRJ700 family, which uses Rockwell Collins Proline. &lt;br /&gt;
It is published as a separate framework in the hope that it is useful for other aircraft as well, &lt;br /&gt;
however some features may be rather specific.&lt;br /&gt;
The biggest motivation and primary design goal was to support &amp;quot;near optimal&amp;quot; &lt;br /&gt;
performance but that does not come automatically of course.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Main article|Canvas EFIS Framework}}&lt;br /&gt;
&lt;br /&gt;
== 2019 ==&lt;br /&gt;
placeholder for next year&lt;br /&gt;
&lt;br /&gt;
== 2018 ==&lt;br /&gt;
=== Compositor ===&lt;br /&gt;
{{Main article|Compositor}}&lt;br /&gt;
&lt;br /&gt;
[[File:Compositor-08-2018.png|right|thumb|A screenshot showing post-processed gaussian blur and a blue filter:[https://i.imgur.com/Zzxre8a.png]]]&lt;br /&gt;
{{Usr|Icecode}} has been working on and off on multi-pass rendering support for&lt;br /&gt;
FlightGear since late 2017. It went through several iterations and&lt;br /&gt;
design changes, but he think it's finally on the right track. It's&lt;br /&gt;
heavily based on the Ogre3D Compositor and inspired by many&lt;br /&gt;
data-driven rendering pipelines. Its features include:&lt;br /&gt;
&lt;br /&gt;
* Completely independent of other parts of the simulator, i.e. it's part of SimGear and can be used in a standalone fashion if needed, ala Canvas.&lt;br /&gt;
* Although independent, its aim is to be fully compatible with the current rendering framework in FG. This includes the Effects system, CameraGroup, Rembrandt and ALS (and obviously the Canvas).&lt;br /&gt;
* Its functionality overlaps Rembrandt: what can be done with Rembrandt can be done with the Compositor, but not vice versa.&lt;br /&gt;
* Fully configurable via a XML interface without compromising performance (ala Effects, using PropertyList files).&lt;br /&gt;
* Optional at compile time to aid merge request efforts.&lt;br /&gt;
* Flexible, expandable and compatible with modern graphics.&lt;br /&gt;
* It doesn't increase the hardware requirements, it expands the hardware range FG can run on. People with integrated GPUs (Intel HD etc) can run a Compositor with a single pass that renders directly to the screen like before, while people with more powerful cards can run a Compositor that implements deferred rendering, for example.&lt;br /&gt;
&lt;br /&gt;
Unlike Rembrandt, the Compositor makes use of scene graph cameras&lt;br /&gt;
instead of viewer level cameras.&lt;br /&gt;
&lt;br /&gt;
This allows CameraGroup to manage windows, near/far cameras and other&lt;br /&gt;
slaves without interfering with what is being rendered&lt;br /&gt;
(post-processing, shadows...).&lt;br /&gt;
&lt;br /&gt;
The Compositor is in an usable state right now: it works but there are&lt;br /&gt;
no effects or pipelines developed for it. There are also some bugs and&lt;br /&gt;
features that don't work as expected because of some hardcoded&lt;br /&gt;
assumptions in the FlightGear Viewer code. Still, I think it's time to&lt;br /&gt;
announce it so people much more knowledgeable than me can point me in&lt;br /&gt;
the right direction to get this upstream and warn me about possible&lt;br /&gt;
issues and worries. :)&lt;br /&gt;
&lt;br /&gt;
=== Aircraft Dialogs ===&lt;br /&gt;
Some of you may already know that the current tool to generate the dialogs ([[PUI]]) is going to disappear in the mid-future. After some (partially controversial) discussion, there seems now to be some support for the idea that canvas is a good tool to generate aircraft-specific dialogs in the future &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/93862C87-0D3E-47BB-B169-8D3CBBF963B7%40kdab.com/#msg36194973&amp;lt;/ref&amp;gt; (as it allows to tailor the dialog closely to the plane and also, canvas being canvas, the UI can smoothly mesh with the 3d models, so you can project a canvas checklist onto a 3d model in sim for instance rather than a popup window).&lt;br /&gt;
&lt;br /&gt;
Thorsten would very much like to claim to be pioneering this approach, but in fact he believes the [[Extra EA-500|Extra-500 team]] is - look at the [[Extra_EA-500/failure_dialog|failure dialog of that plane]] where you can click the components you want to fail and you see what he means!&lt;br /&gt;
&lt;br /&gt;
[[File:Extra500-Failuredialog-deice.png|right|thumb|500px|Extra 500 - failure dialog - de-ice]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anyway, Thorsten has started to roll out a few designs of his own and try to keep the tools fairly general so that they can be re-used by others- so here's the revised version of the Shuttle propellant dialog.&lt;br /&gt;
&lt;br /&gt;
[[File:Propellant dlg02.jpg|thumb|right|an example of the detail dialog which allows to set levels of fuel and oxidizer separately (and the overview dialog shows the usable propellant then, i.e. the minimum of the two) - for aircraft, this would be somewhat simpler.]]&lt;br /&gt;
&lt;br /&gt;
The general idea is to use semi-transparent 'content gauges' on a background raster image to show where the tank is located and how full it currently is - double-clicking any tank will bring up a detail window which allows to set the content (here propellant and oxidier separately, this is rocket fuel...) and also shows the current tank pressures and temperatures.&lt;br /&gt;
The whole thing can readily be applied on top of a different raster image with a different number of tanks - you just instance and position the labels and 'gauges' you need - in fact placement is probably what's going to take longest (at least for me).&lt;br /&gt;
The whole thing is currently in flux  &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=326789&amp;amp;sid=c15d338facab18fb091aa0530f5dfa0f#p326789 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Aircraft-specific dialogs &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Thorsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 24th, 2018 &lt;br /&gt;
  |added  =  Jan 24th, 2018 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
If anyone wants to follow the development or use the code, it's here:&lt;br /&gt;
https://sourceforge.net/p/fgspaceshuttledev/code/ci/development/tree/Nasal/canvas/canvas_dialogs.nas&lt;br /&gt;
&lt;br /&gt;
=== Plot2D ===&lt;br /&gt;
&lt;br /&gt;
[[File:Oscilloscope.png|thumb|rleibner's new Oscilloscope addon is working.This screenshot shows the usual c172p &amp;quot;magnetos checking&amp;quot;  Channel 1 (yellow) is '''rpm''' (100 rpm / div).Channel 2 (mauve) is '''magnetos''' (1 / div).Time sweep is 200 ms / div.The idea is to share it as an addon. Mainly to have some feedback about plot2D/graph.&amp;lt;ref&amp;gt;{{cite web  |url    =  https://forum.flightgear.org/viewtopic.php?p=325929#p325929   |title  =  &amp;lt;nowiki&amp;gt; Re: Plot2D and graph helpers &amp;lt;/nowiki&amp;gt;   |author =  &amp;lt;nowiki&amp;gt; rleibner &amp;lt;/nowiki&amp;gt;   |date   =  Jan 6th, 2018   |added  =  Jan 6th, 2018   |script_version = 0.36   }}&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== 2017 ==&lt;br /&gt;
=== Vertical Situation Display ===&lt;br /&gt;
[[File:Rleibner-canvas-vsd-12-2017.png|thumb|rleibner is developing a graph class that works using local (customized) coordinates and calls the plot2D helpers (see below).For testing (and as exercise) he came up with a VSD (Vertical Situation Display): &amp;lt;ref&amp;gt;https://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=33457#p324637&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
rleibner is developing a graph class that works using local (customized) coordinates and calls the plot2D helpers (see below).&lt;br /&gt;
For testing (and as exercise) he came up with a VSD (Vertical Situation Display): &amp;lt;ref&amp;gt;https://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=33457#p324637&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plot2D Helpers ===&lt;br /&gt;
[[File:Plot2D.rectangle and grid.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
[[File:Plot2D.polyline.png|thumb|plot2D.polyline example]]&lt;br /&gt;
&lt;br /&gt;
[[File:Graph examples.png|thumb|rleibner's Canvas plotting framework implemented in Nasal &amp;lt;ref&amp;gt;https://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=32882&amp;amp;start=90&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Plot2D''' is nothing more than a collection of helpers that aims to facilitate the task of coding. It makes intensive use of the [[Canvas Nasal API|Canvas API]], a mandatory reference for those who intend to refine the result beyond what is offered by plot2D.&amp;lt;br /&amp;gt;&lt;br /&gt;
It is assumed here that you already have a minimal knowledge about [[Canvas]].&amp;lt;br /&amp;gt;&lt;br /&gt;
For now '''Plot2D''' resides in the '''SpokenGCA''' addon, but the idea is that in the future it could be included in the $FG-ROOT/Nasal/canvas directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continue reading at [[How to manipulate Canvas elements]] ...&lt;br /&gt;
&lt;br /&gt;
=== FG1000 ===&lt;br /&gt;
Here is a little update o the G1000 emulation. Stuart has now got the key [[MapStructure]] layers in place, though they are not styled correctly for the '''G1000''' yet and Stuart would like to replace some of them (airspace in particular) with vector data, and started on the MFD architecture. For prototyping he hacked together a [[PUI]] dialog box, which speeds up development massively as it reloads all the Nasal code each time it's opened. &lt;br /&gt;
&lt;br /&gt;
There's a screenshot of it here: [[File:Fg1000_mfd.jpg|thumb|right]] &lt;br /&gt;
&lt;br /&gt;
There's also a wiki page of the current status here: http://wiki.flightgear.org/FG1000 Next steps are to get the MFD architecture in place - this will probably require some changes to Richard's generic [[Canvas MFD Framework|MFD]] to support buttons that don't change the MFD pages better. Stuart has not yet pushed this to fgdata - he'll wait until he's happy with the overall architectures so that there is a solid base for anyone else interested in helping out.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36103513/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] FG1000 update &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Nov 4th, 2017 &lt;br /&gt;
  |added  =  Nov 4th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== CanvasWidget and PUI ===&lt;br /&gt;
James pushed a change which changes how we integrate [[PUI]] into the renderer and other systems  &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/flightgear/ci/804dc4e74ab921f196ca5e09eb7cd6de74b09c0d/&amp;lt;/ref&amp;gt;; this makes our PUI usage more modular, so it can be enabled / disabled in a standard way. It also renders PUI via an FBO so we can use it safely (and scale it) on HiDPI screens, since PUI is too old to support a scaling factor as more modern UI toolkits would do. I’ve done a fair amount of testing, and everything seems to be working, but if you see any changes in how PUI reacts to mouse or key presses, or the appearance of things, please let James know via the issue or devel mailing list. It’s using the same code as it always did but starting from a slightly different place, both in terms of drawing and event handling. One temporary regression: right now CanvasWidget (the mechanism by which we include canvas content into PUI) is messed up because previously PUI had no alpha channel, so the canvas’s alpha was ignored. &lt;br /&gt;
&lt;br /&gt;
With the new system, the alpha is actually being used, but this is not really desired - it shows up as a semi-transparent map background in the ‘Select airport’ airfield chart, and the Map-Canvas window at least. James thought he had a work-around for this, but the one he came up with is awkward to support on Windows, he still needs to think on a better solution, so in the meantime he pushed a hack so at least Windows still builds and runs &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/flightgear/ci/c1df6e9d1528fc2513c6f455f0c0ccc6ca74e34a/&amp;lt;/ref&amp;gt;. (If your canvas content inside PUI has an opaque background, you’ll be fine, so one fix is just to adjust the Canvas code for those dialogs, but James would like to find a backwards compatible fix)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36084254/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] PUI non-change, CanvasWidget appearance &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; James Turner &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Oct 20th, 2017 &lt;br /&gt;
  |added  =  Oct 20th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MapStructure used by airports.xml ===&lt;br /&gt;
[[File:Airport-selection dialog updated to use MapStructure.png|thumb|Screenshot showing a the [[PUI]] based airports.xml dialog with an embedded [[Canvas]] widget feature a [[MapStructure]] based airport diagram developed by Stuart]]&lt;br /&gt;
Stuart has committed some changes &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/fgdata/ci/d84c527ca747dd6bbd9634507f0664ff3631bdef/&amp;lt;/ref&amp;gt; to update the Select Airport dialog to use [[Canvas MapStructure]] Layers to display airport information, rather than the now deprecated map layers. The change should be largely transparent to end users - the only significant change is that your can display navigation symbols. This is all part of a long-term effort to provide the building blocks for a Garmin G1000 - these layers could be used for the airport display on the MFD, and could easily be combined with the APS layer to show a moving aircraft.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36075357/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] Updated Select Airport dialog &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Oct 13th, 2017 &lt;br /&gt;
  |added  =  Oct 13th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Canvas Slippy Maps ===&lt;br /&gt;
[[File:StuartsSlippyMap1.png|thumb|Stuart pushed some changes to fgdata with OpenStreetMap, OpenAIP and VFRMap layers for the Canvas Map Layer system, which can be seen on the canvas map dialog.  They use a generic Slippy Map OverlayLayer Map Layer. Additional web-based mapping can be trivially added by creating a new lcontroller.  See Nasal/Canvas/map/OpenAIP.lcontroller for an example.I've also added a Web Mercator Projection to the Canvas Map support.The wiki will be updated shortly.&amp;lt;ref&amp;gt;{{cite web  |url    =  https://forum.flightgear.org/viewtopic.php?p=319545#p319545   |title  =  &amp;lt;nowiki&amp;gt; Re: Canvas G1000 &amp;lt;/nowiki&amp;gt;   |author =  &amp;lt;nowiki&amp;gt; stuart &amp;lt;/nowiki&amp;gt;   |date   =  Sep 28th, 2017   |added  =  Sep 28th, 2017   |script_version = 0.40   }}&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[File:StuartsSlippyMap2.png|thumb|Stuart pushed some changes to fgdata with OpenStreetMap, OpenAIP and VFRMap layers for the Canvas Map Layer system, which can be seen on the canvas map dialog.  They use a generic Slippy Map OverlayLayer Map Layer. Additional web-based mapping can be trivially added by creating a new lcontroller.  See Nasal/Canvas/map/OpenAIP.lcontroller for an example.I've also added a Web Mercator Projection to the Canvas Map support.The wiki will be updated shortly.&amp;lt;ref&amp;gt;{{cite web  |url    =  https://forum.flightgear.org/viewtopic.php?p=319545#p319545   |title  =  &amp;lt;nowiki&amp;gt; Re: Canvas G1000 &amp;lt;/nowiki&amp;gt;   |author =  &amp;lt;nowiki&amp;gt; stuart &amp;lt;/nowiki&amp;gt;   |date   =  Sep 28th, 2017   |added  =  Sep 28th, 2017   |script_version = 0.40   }}&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[File:StuartsSlippyMap3.png|thumb|MapStructure OpenAIP layer created by Stuart for the ongoing G1000 effort]]&lt;br /&gt;
&lt;br /&gt;
[[File:StuartsSlippyMap4.png|thumb|MapStructure OSM (OpenStreetMap) layer created by Stuart for his ongoing G1000 effort]]&lt;br /&gt;
&lt;br /&gt;
[[File:Slawek-stamen-maps.png|thumb|Regarding mailling list talk: https://sourceforge.net/p/flightgear/mailman/message/36059733/ and some information in G1000 canvas topic (https://forum.flightgear.org/viewtopic.php?f=71&amp;amp;amp;t=32764There is commented out three different map styles (terrain + overlay, terrain, toner). One can apply this patch to get new tile rendering.&amp;lt;ref&amp;gt;{{cite web  |url    =  https://forum.flightgear.org/viewtopic.php?p=319802#p319802   |title  =  &amp;lt;nowiki&amp;gt; Canvas MapLayer for OSM, OpenAIP, VFR Sectionals and other &amp;lt;/nowiki&amp;gt;   |author =  &amp;lt;nowiki&amp;gt; slawekmikula &amp;lt;/nowiki&amp;gt;   |date   =  Oct 2nd, 2017   |added  =  Oct 2nd, 2017   |script_version = 0.40   }}&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Stuart wants to build a set of Canvas MapStructure layers for a G1000 implementation - the canvas map UI is really just a way to display it.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36059733/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Canvas MapLayer for OpenStreetMap, OpenAIP,&lt;br /&gt;
 VFR Sectionals &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Oct 1st, 2017 &lt;br /&gt;
  |added  =  Oct 1st, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SimGear: https://sourceforge.net/p/flightgear/simgear/ci/a800189c25a3fb4610c1e36655940a95694c4a84/&lt;br /&gt;
* FGData: https://sourceforge.net/p/flightgear/fgdata/ci/85b7665c19ebaae02d746fef53f25f8d8974eb13/&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=319550#p319550 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Canvas G1000 &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Sep 28th, 2017 &lt;br /&gt;
  |added  =  Sep 28th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stuart added some new Nasal Canvas MapLayers to support Slippy Maps, as used by most web-based mapping services such as openstreetmap. This allows us to display sectional charts (for the US - vfrmap.com), and airspace information (courtesy of openaip.org), as well as a openstreetmap data. The canvas Map dialog has been updated to support these layers. Map data is retrieved over http and cached locally.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36056088/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] Canvas MapLayer for OpenStreetMap, OpenAIP,&lt;br /&gt;
 VFR Sectionals &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Sep 28th, 2017 &lt;br /&gt;
  |added  =  Sep 28th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fgdata with OpenStreetMap, OpenAIP and VFRMap layers for the Canvas Map Layer system, which can be seen on the canvas map dialog.  They use a generic Slippy Map OverlayLayer Map Layer. Additional web-based mapping can be trivially added by creating a new lcontroller.  See Nasal/Canvas/map/OpenAIP.lcontroller for an example.&lt;br /&gt;
Stuart has also added a Web Mercator Projection to the Canvas Map support.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=319545#p319545 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Canvas G1000 &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; stuart &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Sep 28th, 2017 &lt;br /&gt;
  |added  =  Sep 28th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Canvas VSD / Vertical MapStructure Layers ===&lt;br /&gt;
{{See also|Howto:Implement a Vertical Situation Display in Nasal}}&lt;br /&gt;
A few years ago, Omega95 created a Canvas VSD [[File:VSD-prototype-by-omega95.png|right|250px]]&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=291908#p291908 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Trying to experiment  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 5th, 2016 &lt;br /&gt;
  |added  =  Aug 5th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recently, clm76 adapted Omega95's original Canvas VSD to the CitationX&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=319234#p319234 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken GCA &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; clm76 &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Sep 23rd, 2017 &lt;br /&gt;
  |added  =  Sep 23rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Clm76-vsd-10-2017.png|thumb|clm76 adapted the Omega95's VSD to the CitationX :&amp;lt;ref&amp;gt;{{cite web  |url    =  https://forum.flightgear.org/viewtopic.php?p=319234#p319234   |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken GCA &amp;lt;/nowiki&amp;gt;   |author =  &amp;lt;nowiki&amp;gt; clm76 &amp;lt;/nowiki&amp;gt;   |date   =  Sep 23rd, 2017   |added  =  Sep 23rd, 2017   |script_version = 0.40   }}&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Canvas + Effects goes Deferred Rendering ===&lt;br /&gt;
Icecode GL  has been experimenting with effects/shaders support for Canvas and  got something kind of dirty and primitive but it works:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas+Effects vs deferred.png|thumb|been experimenting with effects/shaders support for Canvas and Icecode GL got something kind of dirty and primitive but it works]]&lt;br /&gt;
&lt;br /&gt;
It works similarly to how Rembrandt does its buffers. There is a new texture type called &amp;quot;canvas&amp;quot; that allows shaders to access any canvas texture via a texture unit, just like you'd access a normal texture from the hard drive. This removes (most) limitations of addPlacement, which can only substitute the &amp;quot;base&amp;quot; texture (unit 0). The posibilities are endless, it just needs some care and work. At the moment we could have shadow mapping outside Rembrandt just by creating a new view placed at the Sun and make it render the depth buffer to a canvas. Then every ALS shader could access this canvas and do the shadow comparison thingy. Planar reflections in the water should be kind of trivial as well, it'd just require the model-view matrix to be multiplied by a reflection matrix and the water shader could just paste the result over the water surface (with some more fancy calculations to make it pretty of course).&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=318662#p318662 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Canvas:View development &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Icecode GL &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Sep 11th, 2017 &lt;br /&gt;
  |added  =  Sep 11th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Canvas &amp;amp; Slave Cameras ===&lt;br /&gt;
{{See also|Howto:Canvas View Camera Element}}&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas-view-element-prototype-by-icecode gl.png|thumb|upright|[[Canvas]] gui dialog with a custom canvas element to display view manager views (based on code prototyped by F-JJTH)]]&lt;br /&gt;
&lt;br /&gt;
[[File:F-JJTH-SlavedCams-Instrument-09-2017-one.png|thumb|First screenshot created by Alant, view from the rear cockpit of TSR2, showing the the custom &amp;quot;camera-display&amp;quot; prototyped by F-JJTH, just to the left of the moving map.Known issue:  despite flying more or less straight and level, the image camera point can be seen to jump around between screenshots. &amp;lt;ref&amp;gt;{{cite web  |url    =  https://forum.flightgear.org/viewtopic.php?p=317486#p317486   |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt;   |author =  &amp;lt;nowiki&amp;gt; Alant &amp;lt;/nowiki&amp;gt;   |date   =  Aug 26th, 2017   |added  =  Aug 26th, 2017   |script_version = 0.40   }}&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[File:F-JJTH-SlavedCams-Instrument-09-2017-two.png|thumb|Second screenshot created by Alant, view from the rear cockpit of TSR2, showing the the custom &amp;quot;camera-display&amp;quot; prototyped by F-JJTH, just to the left of the moving map.Known issue:  despite flying more or less straight and level, the image camera point can be seen to jump around between screenshots. &amp;lt;ref&amp;gt;{{cite web  |url    =  https://forum.flightgear.org/viewtopic.php?p=317486#p317486   |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt;   |author =  &amp;lt;nowiki&amp;gt; Alant &amp;lt;/nowiki&amp;gt;   |date   =  Aug 26th, 2017   |added  =  Aug 26th, 2017   |script_version = 0.40   }}&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Former FlightGear core developer F-JJTH shared a patch &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317448#p317448 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt; implementing a proof-of-concept to render an arbitrary slave view to a FBO/RTT using a new dedicated &amp;quot;camera-display&amp;quot; instrument. This would be the kind of functionality required to implement many interesting features that cannot currently be added easily; Rear view mirrors in fighters could become a reality, as well as camera displays in SAR helicopters, outside views in airliners, backing view displays in cars etc.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317462#p317462 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Johan G &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The patch seems not to break anything else, and does nothing unless the aircraft side code is added. It is therefore reasonably safe to add the patch to your working copy of FG. No git branch expertise is required.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317493#p317493 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Alant &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the patch is applied and the binary rebuilt, all that is needed is to add the new camera-display to an existing cockpit panel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;camera-display&amp;gt;&lt;br /&gt;
 &amp;lt;name&amp;gt;cd&amp;lt;/name&amp;gt;&lt;br /&gt;
 &amp;lt;texture&amp;gt;&amp;lt;/texture&amp;gt;&lt;br /&gt;
 &amp;lt;enabled type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
 &amp;lt;view-number&amp;gt;0&amp;lt;/view-number&amp;gt;&lt;br /&gt;
&amp;lt;/camera-display&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For view configuratoin, it's using the standard view-manager interface, so you primarily need to set the view-number property to change the view (untested, feedback is just based on looking at the patch in question).&lt;br /&gt;
Specifically, when running the patched fgfs binary, look for: '''/instrumentation/camera-display''' and the '''view-number''' property underneath&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317488#p317488 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The current state is... well, it &amp;quot;works&amp;quot; ;-)&lt;br /&gt;
However there are some bugs:&lt;br /&gt;
&lt;br /&gt;
* The image jumps all over the place when the aircraft is moving.&lt;br /&gt;
* The colours are wrong.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317475#p317475 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Alant &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# The colours are wrong with Rembrandt. It looks as if the wrong buffer is being used.&lt;br /&gt;
# Jumping around is the same with and without Rembrandt.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317486#p317486 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Alant &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The jumping around effect seems to be in all views. The control tower view jumps back and forward, showing the whole tower at times.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317489#p317489 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Alant &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
before looking at some of our most advanced use-cases, it's best to tinker with a really simple scenario, to see how well this works, and what needs to be polished.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317487#p317487 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if anybody is interested in working out what is missing or what can be improved, we should review working features doing similar things, e.g. the screenshot/streaming  handlers or the camera setup routines used by CameraGroup.cxx itself.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317477#p317477 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The patch itself seems overlapping with Zan's original &amp;quot;new-cameras&amp;quot; effort, as mentioned at: [[Canvas Development#Supporting Cameras]]&lt;br /&gt;
If this patch should work well enough, it would probably make sense to integrate it with the Canvas system to come up with a dedicated &amp;quot;camera&amp;quot; element for the Canvas system, that would be configurable using the format/properties used by the view manager: [[Howto:Configure views in FlightGear]]&lt;br /&gt;
At that point, it would actually be a terrific idea to review Zan's original patches and see if any of the features there could/should be integrated with the new Canvas::Camera element - like you say, once this is properly working, &amp;quot;the sky is the limit&amp;quot;  (or not even that, think shuttle cams)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317466#p317466 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus, the patch needs some TLC - however, it's definitely a very solid foundation, and very compelling as a prototype, especially given that the patch is pretty lightweight. &lt;br /&gt;
&lt;br /&gt;
Much of the OSG machinery to set up the FBO/RTT (render to texture) is overlapping with Canvas functionality, so we could do away with that by using a dedicated Canvas element (which may fix some issues, e.g. colors being off).&lt;br /&gt;
&lt;br /&gt;
Besides, if/when we actually use the approach used by Torsten's screenshot handler routines (mongoose/Phi), the &amp;quot;jumping&amp;quot; may also be gone (just a guess).&lt;br /&gt;
At this point, we need to get more people involved who are able to patch/rebuild sg/fg from source and test these patches, so that we can come up with a team of folks to help with testing/developing. Hooray can certainly help with the Canvas side of this, which means that the FBO/RTT setup routines can be simplified, and he can help turn the whole thing into a dedicated Canvas &amp;quot;camera&amp;quot; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317490#p317490 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Gear view in cockpit computer &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 26th, 2017 &lt;br /&gt;
  |added  =  Aug 26th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1000 &amp;amp; MapStructure improvements ===&lt;br /&gt;
{{Main article|FG1000}}&lt;br /&gt;
&lt;br /&gt;
As of 09/2017, Stuart started making some tentative steps towards a full Garmin [[G1000]] simulation, he started with the excellent xkv1000 as a starting point, particularly for the PFD which very closely mirrors the G1000.&lt;br /&gt;
&lt;br /&gt;
For the MFD he's planning to use the [[Canvas MapStructure]] layers (obviously).&lt;br /&gt;
One area he is going to have to develop is tiled mapping, which the [[MapStructure]] in fgdata doesn't currently support as a layer.  &lt;br /&gt;
&lt;br /&gt;
Stuart's thoughts are:&lt;br /&gt;
&lt;br /&gt;
# Create an OverlayLayer layer with a controller that is analogous to the SymbolLayer, but likely with a simple update method rather than SearchCmd, and no .symbol equivalent&lt;br /&gt;
# Convert the tiled map example from the wiki, but also other layers such as a compass rose, airport diagram, lat/lon grid.&lt;br /&gt;
&lt;br /&gt;
Stuart is currently undecided on how to handle the projection - whether to have the layer itself have to interpret the centerpoint of the map and scale, and then make a projection itself, or to provide it from the Map.  The latter would undoubtably be cleaner, but for something like a tiled map he suspects that the management will need to be quite low down the stack.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=317013#p317013 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Canvas G1000 &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; stuart &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 21st, 2017 &lt;br /&gt;
  |added  =  Aug 21st, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stuart is getting to grips with the Canvas MapLayer stuff, and in particular rendering layers from a map service. One layer he is wanting to add is airspace information, so it's very good news that this is available. From the looks of things Stuart may just be able to plug in the Slippy Tile URLs and render all the airspace in-sim in a Canvas map.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36034923/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] New MultiPlayer map server based on nodejs &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Sep 12th, 2017 &lt;br /&gt;
  |added  =  Sep 12th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Property I/O ===&lt;br /&gt;
{{See also|Howto:Canvas Path Benchmarking}}&lt;br /&gt;
&lt;br /&gt;
As a first step towards [[Canvas_News#Moving_map.2FRNAV_discussion|developing a G1000]], Stuart Buchanan has been looking at Nasal property read/write performance, as he understands that this is a bottleneck for developing complex Canvas applications.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35974946/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] Nasal property lookup performance &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 31st, 2017 &lt;br /&gt;
  |added  =  Jul 31st, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For well-organized code (aka writing only when needed, organizing the displays in suitable groups, staggered updates...), it's going to be fast enough. For a straightforward approach to complicated displays probably not. A thousand properties sounds a lot, but every update in translation is already 2 properties, combined with a visible flag and color information you're down to 166 elements you can update already. If each of them is driven by reading a value from the tree you're losing even more. Generally, if there is a way of making either method faster, it would affect performance in a positive way all over Nasal scripting because currently property I/O is in my view the largest bottleneck (especially of canvas).&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35975339/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Nasal property lookup performance &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Thorsten Renk &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 1st, 2017 &lt;br /&gt;
  |added  =  Aug 1st, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
low-hanging fruit in the canvas API: &lt;br /&gt;
* add more calls like updateText (updateTranslation, updateRotation,...) which check whether the property to be written has changed at all against a Nasal record before actually doing property I/O &lt;br /&gt;
* make the updateXXX methods store the node reference and use that rather than construct it afresh &lt;br /&gt;
&lt;br /&gt;
If the test suite numbers hold up in reality, this ought to give a factor 2 to &amp;lt;few hundred&amp;gt; (dependent on how often the argument actually has to be written - at least Thorsten was able to write 50 million numbers into a Nasal array much faster than 50.000 numbers into properties).&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35976562/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Nasal property lookup performance &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Thorsten Renk &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 1st, 2017 &lt;br /&gt;
  |added  =  Aug 1st, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
it’s easy to add native helpers to Canvas to set some properties from code directly, rather than using the canvas.nas wrappers which then use props.nas internally. This could bypass a whole ton of Nasal if that’s the issue. Of course this code will still have to update properties from C++, so we should rather do the analysis first to see where the slowness occurs, since this could either be a very big win, or completely pointless based on that measurement.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35976398/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Nasal property lookup performance &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; James Turner &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 1st, 2017 &lt;br /&gt;
  |added  =  Aug 1st, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Moving map/RNAV discussion ===&lt;br /&gt;
{{See also|Complex Canvas Avionics}}&lt;br /&gt;
&lt;br /&gt;
The airspace system is in the process of changing drastically&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35924395/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] RFD: FlightGear and the changing state of air&lt;br /&gt;
 navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; David Megginson &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 3rd, 2017 &lt;br /&gt;
  |added  =  Jul 3rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and there's an interesting discussion that was started by David Megginson regarding implementing G1000-type systems on the mailing list:&lt;br /&gt;
[https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/CAKor_TGugT%2Be%3DQhdNBqWq3Pn%2BCEq6iLZsgaB7HmiU%2BBoDK0vxQ%40mail.gmail.com/#msg35924395 https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/CAKor_TGugT%2Be%3DQhdNBqWq3Pn%2BCEq6iLZsgaB7HmiU%2BBoDK0vxQ%40mail.gmail.com/#msg35924395]&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313697#p313697 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: zkv1000 reborn &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; stuart &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 4th, 2017 &lt;br /&gt;
  |added  =  Jul 4th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you're flying an IFR approach with a GPS navigator, you can use RNAV for the transitions, but need to switch to the ground ILS transmitter for the actual approach (they both use the same CDI on many planes, so it's easy to miss). The GTN 650 that I'm installing in my plane will switch CDI mode automatically under certain conditions, but it's not guaranteed. In the past,  people could practice the hell out of these kinds of details in FlightGear (tuning, twisting, and identifying all the navaids, adding crosswind corrections, etc) so that they were habits when I flew them for real, but we can't practice RNAV procedures like this (or many others).&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35926937/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; David Megginson &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 4th, 2017 &lt;br /&gt;
  |added  =  Jul 4th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
this is something we need to address, as our GA aircraft will otherwise become more and more old-fashioned.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35925226/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 3rd, 2017 &lt;br /&gt;
  |added  =  Jul 3rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FlightGear will still be great for people who want to practice the mechanical parts of flying (e.g. crosswind wheel landings in a Cub), but will slip further and further behind for people who want to use it for real IFR practice.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35927088/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; David Megginson &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 4th, 2017 &lt;br /&gt;
  |added  =  Jul 4th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
zakh on the forum has been developing a Garmin G1000 clone called thekv1000: https://forum.flightgear.org/viewtopic.php?f=14&amp;amp;t=32056 &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35925226/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 3rd, 2017 &lt;br /&gt;
  |added  =  Jul 3rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the G1000 has multiple pages of data with data entry for flightplans etc. Stuart is sure there is a lot that has been learned by the Shuttle team that can be passed on as &amp;quot;best practise&amp;quot;. The Route Manager should be able to handle most of the &amp;quot;magenta line&amp;quot; tasks, but it may be that the more complicated routing such as the RF approach, fly-by vs fly-over requires some new autopilot coding as you describe.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35925369/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 3rd, 2017 &lt;br /&gt;
  |added  =  Jul 3rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MFD framework that is used on the Shuttle is more than capable of supporting a most of the requirements; Canvas is capable of rendering the displays. So it's possible to do this&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35927653/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Richard Harrison &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 4th, 2017 &lt;br /&gt;
  |added  =  Jul 4th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A number of contributors expressed concerns regarding the performance of the Canvas system when it comes to implementing sophisticated avoinics like G1000-style systems. However, the fact that there are people who code canvas like there's no tomorrow and update 10 elements where an update of the group position would do the trick at a fraction of the cost doesn't mean that canvas or Nasal are slow - it means inefficient code is slow, and that's just as true for C++. Nasal as such is fast, and compared with the cost of rendering the terrain, rendering a canvas display is fast on the GPU (you can test by rendering but not updating a canvas display), and unless you're doing something very inefficient, calculating a display but not writing it to the property tree is fast (you can test this by disabling the write commands). It's the property I/O which you need to structure well, and then canvas will run fast. And of course the complexity of your underlying simulation costs - if you run a thermal model underneath to get real temperature reading, it costs more than inventing the numbers. But that has nothing to do with canvas.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35926343/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Thorsten Renk &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 4th, 2017 &lt;br /&gt;
  |added  =  Jul 4th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Structured in a reasonable way (i.e. minimiing property I/O in update cycles, avoiding canvas pitfalls which trigger high performance needs etc. ) canvas is pretty fast (kind of reminds me of the old 'Nasal is slow' discussions... it's still the same things which are slow, except canvas hides it behind some abstraction - understand property I/O, and it'll run fast)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35925540/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Thorsten Renk &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 3rd, 2017 &lt;br /&gt;
  |added  =  Jul 3rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The G1000 is a fairly significant piece of computer hardware that we're going to emulate. It's not going to be &amp;quot;free&amp;quot; particularly for those on older hardware that's already struggling. However, hopefully we can offload a chunk of the logic (route management, autopilot/flight director) to the core, and do things like offline generation of terrain maps to minimie the impact.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35926745/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Stuart Buchanan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 4th, 2017 &lt;br /&gt;
  |added  =  Jul 4th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For starters, Stuart is hoping to to optimize the property access and become more familiar with the Canvas C++ code so that he can help bridge the cap between core and Canvas client developers.  He thinks James has some thoughts on the Canvas C++, so he'll want to coordinate with him as well.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313787#p313787 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: zkv1000 reborn &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; stuart &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 6th, 2017 &lt;br /&gt;
  |added  =  Jul 6th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One of the ideas raised by David is, should there maybe be a separate project to build an embeddable GPS navigator with different faces/UIs (and a default standalone front end)? As others have mentioned, a lot of the backend logic is the same, like doing a gradual transition from RNAV to Localiser on intercept to avoid a sudden jolt in the A/P, or calculating a turn past a fly-by waypoint. Again, that would be a way to join forces with other Sim dev communities. &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35929948/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; David Megginson &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 5th, 2017 &lt;br /&gt;
  |added  =  Jul 5th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if we wanted to build a tablet-based emulator ourselves, we could at least join forces with the FSX and X-Plane communities to do it to grow up the pool of talent.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35927243/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] RFD: FlightGear and the changing state of&lt;br /&gt;
 air navigation &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; David Megginson &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 4th, 2017 &lt;br /&gt;
  |added  =  Jul 4th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Groups and Colors ===&lt;br /&gt;
Thorsten learned something rather important about canvas: After doing canvas a while, most of us love the concept to suitably group things and then translate or hide the whole group, which is a very performance-friendly way to get the job done compared with moving all elements.&lt;br /&gt;
&lt;br /&gt;
Thorsten had the situation that the Shuttle HUD has several de-clutter levels which are progressively hidden as the de-clutter function is used. So, he introduced dc0 to dc3 as the groups and operate with selective setVisible() on them according to chosen de-clutter level. &lt;br /&gt;
&lt;br /&gt;
Doing brightness adjustment of the HUD by setting color on the group (specifically the alpha channel).&lt;br /&gt;
&lt;br /&gt;
Unlike translations, rotations or visible statements acting on the top level of the group, this one seems to be passed recursively down the child elements, leading to a huge property I/O. &lt;br /&gt;
&lt;br /&gt;
Anyway, if you know what it does, it's a very useful function still - just it can't be used in a performance-critical place, and it should not be confused with performance-friendly group operations.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=307073#p307073 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Color and groups - beware! &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Thorsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Mar 16th, 2017 &lt;br /&gt;
  |added  =  Mar 16th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Canvas GUI ===&lt;br /&gt;
James is planning a bit of work in the Canvas GUI/widgets area but in the medium term (mid 2017), he wouldn't recommend making lots of extensions to the current Canvas GUI toolkit because he wants to give the whole Canvas-GUI architecture a review and sanity-check first. For the time being, he has no idea if this will be compatible or incompatible with the existing GUI controls, or even be successful. &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35591369/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] fgplot / currently active canvas developers? &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; James Turner &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 8th, 2017 &lt;br /&gt;
  |added  =  Jan 8th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hhis intuition is the current style system is overkill, but that the layout code will need some enhancements. So he would avoid both those areas for now. Adding missing widget types is probably safe, but if you propose them here we can discuss their API to hopefully keep it stable even if the implementation changes.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35610051/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] fgplot / currently active canvas developers? &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; James Turner &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 17th, 2017 &lt;br /&gt;
  |added  =  Jan 17th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skia talks ===&lt;br /&gt;
James announced he wants to replace the vector drawing routines with another package which was designed with SIMD in mind&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=302558#p302558 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Simgear compilation failure &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; erik &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 3rd, 2017 &lt;br /&gt;
  |added  =  Jan 3rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Blend2D is quite amazing for a technical point of view: it compiles native CPU code (including SIMD) for every draw operation using a JIT compiler.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35631656/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Canvas-svg &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Erik Hofman &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 28th, 2017 &lt;br /&gt;
  |added  =  Jan 28th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea is to use Skia (from Chrome), actually, since it has software and hardware backends. This would allow switching based on which gives better performance on a given machine, and easy porting to other devices, such as Android. The remote-canvas code is a proof-of-concept for this, the aim would be to use the same protocol to render the canvases in different threads.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35630367/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel]  Canvas-svg &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; James Turner &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 27th, 2017 &lt;br /&gt;
  |added  =  Jan 27th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After reviewing Skia (including reading the sources) and it seems like a very promising fit, albeit with the caveat that it is kind of huge. Blend2D looks pretty good but less mature than Skia, and most importantly, lacks a hardware renderer which James thinks is critical to support devices such as the Raspberry Pi and cheap Android tablets, which James expects to be a very good target for the remote canvas (an RPi driving a wide-screen panel via HDMI could do both the PFD and ND of a Boeing/Airbus setup, but that’s 1920 x 1080 pixels which is too much to fill in software at 60Hz) Anyway, at this point the code is small enough that experimenting with one renderer or another (Cairo also) is probably a weekend’s hacking, if anyone cared to try. James is currently working on hardware acceleration using QtQuick, since we already have Qt as a dependency.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35631079/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Canvas-svg &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; James Turner &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 27th, 2017 &lt;br /&gt;
  |added  =  Jan 27th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2016 ==&lt;br /&gt;
&lt;br /&gt;
=== SIMD ===&lt;br /&gt;
{{Main article|SIMD Support}}&lt;br /&gt;
Erik is experimenting with streamlined Canvas rendering using Single Instruction Multiple Data (SIMD) instructions which is able to calculate on 4 floating poit variables simultaneously (e.g 3 or 4 value vectors). For the F-16 map this gives a speedup from 12+ seconds delay rendering at the first select down to 6 seconds delay.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35555294/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] Canvas rendering speed &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Erik Hofman &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 16th, 2016 &lt;br /&gt;
  |added  =  Dec 16th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35555306/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Canvas rendering speed &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Erik Hofman &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 16th, 2016 &lt;br /&gt;
  |added  =  Dec 16th, 2016 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A few users have reported a noticeable increase in framerate on their computers, e.g. on some desktop the framerate has doubled&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35555950/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Canvas rendering speed &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Alan Teeder &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 16th, 2016 &lt;br /&gt;
  |added  =  Dec 16th, 2016 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SSE and NEON work best when considered in the design stage. Adding it afterwards is always suboptimal. Thus, Erik might still update it in a place or two but this work isn't intended to detract from adding Skia.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35556369/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Canvas rendering speed &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Erik Hofman &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 17th, 2016 &lt;br /&gt;
  |added  =  Dec 17th, 2016 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Porting the legacy HUD ===&lt;br /&gt;
James is planning to port the C++ HUD to use Canvas for its rendering soon (next few months), but he plans to keep XML compatibility (so aircraft don't see any change) and will keep the placement logic relative to the view, for the same reason. &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=301277#p301277 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Pitfalls of canvas HUDs &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; zakalawe &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 15th, 2016 &lt;br /&gt;
  |added  =  Dec 15th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2D Panels ===&lt;br /&gt;
&lt;br /&gt;
James is working towards migrating 2D panels to use the Canvas&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/35623408/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This step was inspired by a discussion that originally took place on the devel list, i.e. we should move the 2D panel and HUD rendering over to this approach, since that would get rid of all the legacy OpenGL code besides the GUI. &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/29584988/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moving the HUD to use the Canvas would be a great step from his point of view, since it and 2D panels (which he is happy to write the convert for!) are the last places besides the UI which make raw OpenGL calls, and hence would benefit from moving to the Canvas (and thus, to use OSG internally) &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/30058187/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The original goal was to identify common requirements to seee how we manage XML / property-list file processing in a nice way, to support the various formats we want to create canvas elements from - GUI dialogs, 2D panels and HUDs.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/29588419/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
James is planning in the next couple of weeks to port the panel code to generate Canvas elements, and then submit my fgcanvas utility to render any Canvas remotely, That code currently users software rendering (too slow for the RaspberryPi he expects), but upgrading the code to use OpenGL ES2 rendering is next on his todo-list so he can fun on Android / iOS devices as well as Raspbery Pi. If you’re interested in working on that please let him know, he would be glad of the help.&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/35552824/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James has done most of the work to port the 2D panels to use Canvas in an experimental branch&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/35691472/&amp;lt;/ref&amp;gt;, and will do the C++ HUD next, and hence is creating Canvas elements bypassing the Nasal API.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35574596/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Observation about the Canvas Z-ordering &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; James Turner &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 29th, 2016 &lt;br /&gt;
  |added  =  Dec 29th, 2016 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skia backend ===&lt;br /&gt;
James is also currently looking at making a Skia backend for the Canvas (to replace Shiva, making a solution using Skia ([https://skia.org https://skia.org]) as the backend, because this would give good performance via its OpenGL backend, make people who don’t want to use Qt happier, and could also replace the OSG rendering of the Canvas within FlightGear itself, allowing us to ditch ShivaVG (which is unmaintained) and probably improve performance substantially. (Skia can do SSE3/NEON optimised software rendering in a background thread, so Canvas wouldn’t eat into our OSG / triangle budget)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=300990#p300990 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Remote canvas utility &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; zakalawe &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 10th, 2016 &lt;br /&gt;
  |added  =  Dec 10th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;), and Skia already has quite intensive SSE/NEON optimisations, in addition to an optimised OpenGL render which he expects to be substantially more performant than the current OSG Node/Drawable hierarchy.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35555702/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Canvas rendering speed &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; James Turner &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 16th, 2016 &lt;br /&gt;
  |added  =  Dec 16th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Appendix}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=138717</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=138717"/>
		<updated>2023-11-28T14:05:58Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: added entry for: NVIDIA GTX 1060 6GB + Intel Core i5-11600K @ 3.90GHz, driver ver. 535.129.03&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 6GB + Intel Core i5-11600K @ 3.90GHz, driver ver. 535.129.03 ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 11817''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 535.129.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 9928 FrameTime: 0.101 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 15678 FrameTime: 0.064 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 14755 FrameTime: 0.068 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 14812 FrameTime: 0.068 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 14878 FrameTime: 0.067 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 14048 FrameTime: 0.071 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 14006 FrameTime: 0.071 ms&lt;br /&gt;
[shading] shading=phong: FPS: 13706 FrameTime: 0.073 ms&lt;br /&gt;
[shading] shading=cel: FPS: 13818 FrameTime: 0.072 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 11147 FrameTime: 0.090 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 15848 FrameTime: 0.063 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 15815 FrameTime: 0.063 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 12968 FrameTime: 0.077 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 9205 FrameTime: 0.109 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 15094 FrameTime: 0.066 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5891 FrameTime: 0.170 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9839 FrameTime: 0.102 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2797 FrameTime: 0.358 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3745 FrameTime: 0.267 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3421 FrameTime: 0.292 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 12804 FrameTime: 0.078 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 11401 FrameTime: 0.088 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1413 FrameTime: 0.708 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 10602 FrameTime: 0.094 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4095 FrameTime: 0.244 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 15145 FrameTime: 0.066 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 14786 FrameTime: 0.068 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 15005 FrameTime: 0.067 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 14627 FrameTime: 0.068 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 14700 FrameTime: 0.068 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 14645 FrameTime: 0.068 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 14682 FrameTime: 0.068 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 14675 FrameTime: 0.068 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off, driver ver. 460.91.03 ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Add_procedures_to_the_route_manager&amp;diff=138643</id>
		<title>Howto:Add procedures to the route manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Add_procedures_to_the_route_manager&amp;diff=138643"/>
		<updated>2023-11-08T18:27:16Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
{{Autoflight Navigation}}&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
A free way to get more SID and STAR procedures for the FlightGear Route Planner&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313123#p313123 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Sarith &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 24th, 2017 &lt;br /&gt;
  |added  =  Jun 24th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
Make some yourself. Charts are easy to find and a quick search will find you the syntax.&lt;br /&gt;
This is what FlightGear is all about; doing it yourself and sharing it to others.&lt;br /&gt;
A quick search would also find existing packages...&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313128#p313128 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Parnikkapore &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 24th, 2017 &lt;br /&gt;
  |added  =  Jun 24th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
SID and STAR procedures are found in the airport's procedures.xml file. There is at most one file per airport and it is located in the airport's root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;scenery directory&amp;amp;gt;/Airports/I/C/A/ICAO.procedures.xml&lt;br /&gt;
&lt;br /&gt;
Where ICAO is your airport code.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313362#p313362 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Parnikkapore &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 28th, 2017 &lt;br /&gt;
  |added  =  Jun 28th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to import SID or STAR procedures for VTSP (Phuket International Airport), you name the file VTSP.procedures.xml and put it in the &amp;amp;lt;scenery directory&amp;amp;gt;/Airports/V/T/S/ directory. In there you will likely find VTSP.twr.xml but not an existing VTSP.procedures.xml file.&lt;br /&gt;
Replace &amp;quot;VTSP&amp;quot; in the directory and procedures.xml file name with your airport code.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313409#p313409 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Parnikkapore &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 29th, 2017 &lt;br /&gt;
  |added  =  Jun 29th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
In the explanation below, the name like &amp;quot;ProceduresDB&amp;quot; is the tag - so it's actually &amp;lt;ProceduresDB&amp;gt; in the XML file.&lt;br /&gt;
The subsequent parameters, like &amp;quot;build&amp;quot; are attributes - so it's actually &amp;lt;ProceduresDB build=&amp;quot;&amp;quot;&amp;gt; in the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ProceduresDB [build] (one of these per file)&lt;br /&gt;
    |&lt;br /&gt;
    Airport [ICAOcode] (one of these per file)&lt;br /&gt;
        |&lt;br /&gt;
        Sid [Name, Runways (comma separated - example: &amp;quot;08L,08R&amp;quot;)]  (many of these per Airport)&lt;br /&gt;
            |&lt;br /&gt;
            Sid_Waypoint [ID (unique sequential integer)] (many of these per Sid)&lt;br /&gt;
                |&lt;br /&gt;
                Name&lt;br /&gt;
                Type&lt;br /&gt;
                Latitude&lt;br /&gt;
                Longitude&lt;br /&gt;
                Speed&lt;br /&gt;
                Altitude&lt;br /&gt;
                AltitudeCons&lt;br /&gt;
                AltitudeRestriction (one of &amp;quot;above&amp;quot; or &amp;quot;below&amp;quot; or &amp;quot;at&amp;quot;)&lt;br /&gt;
                Hdg_Crs (optional. example value = &amp;quot;1&amp;quot;)&lt;br /&gt;
                Hdg_Crs_Value (optional. heading degrees)&lt;br /&gt;
                Sp_Turn (optional. example value = &amp;quot;Auto&amp;quot;)&lt;br /&gt;
            ...&lt;br /&gt;
            Sid_Transition [Name] (just one of these per Sid)&lt;br /&gt;
                |&lt;br /&gt;
                SidTr_Waypoint [ID] (many of these per Sid_Transition)&lt;br /&gt;
&lt;br /&gt;
        Star [Name] (many of these per Airport)&lt;br /&gt;
            |&lt;br /&gt;
            Star_Waypoint [ID] (many of these per Star)&lt;br /&gt;
            ...&lt;br /&gt;
            Star_Transition [Name] (just one of these per Star)&lt;br /&gt;
                |&lt;br /&gt;
                StarTr_Waypoint [ID] (many of these per Star_Transition)&lt;br /&gt;
&lt;br /&gt;
        Approach [Name] (e.g., ILS08L - uses IL, if appropriate, and the runway name by convention)&lt;br /&gt;
            |&lt;br /&gt;
            App_Waypoint [ID]&lt;br /&gt;
            App_Transition [Name] (just one of these per Approach)&lt;br /&gt;
                |&lt;br /&gt;
                AppTr_Waypoint [ID] (many of these per App_Transition)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample procedures.xml File ==&lt;br /&gt;
&lt;br /&gt;
Here is a link to an example xml file which follows the format specified above: https://github.com/jojo2357/flightgear-star-sid-manager/blob/master/2020.4/Airports/K/A/T/KATL.procedures.xml&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313583#p313583 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; eric &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 2nd, 2017 &lt;br /&gt;
  |added  =  Jul 2nd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Bash script ==&lt;br /&gt;
ZirconiumX wrote a bash script for putting the XML files into the FG required locations.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=280561#p280561 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Non-Navigraph SID/STAR xml files &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; ZirconiumX &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Mar 26th, 2016 &lt;br /&gt;
  |added  =  Mar 26th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&amp;lt;!-- Where do you even get the original files? Navigraph? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for file in $(ls *.xml)&lt;br /&gt;
do&lt;br /&gt;
   # First, rename all the files to the correct convention&lt;br /&gt;
   mv &amp;quot;$file&amp;quot; &amp;quot;${file%.xml}.procedures.xml&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   # Then move it to the correct place&lt;br /&gt;
   icao=${file%.xml}&lt;br /&gt;
   icao1=$(echo $icao | cut -c 1)&lt;br /&gt;
   icao2=$(echo $icao | cut -c 2)&lt;br /&gt;
   icao3=$(echo $icao | cut -c 3)&lt;br /&gt;
   mkdir -p $icao1/$icao2/$icao3&lt;br /&gt;
   mv &amp;quot;${icao}.procedures.xml&amp;quot; &amp;quot;$icao1/$icao2/$icao3/${icao}.procedures.xml&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing free community procedures ==&lt;br /&gt;
The FAA provides the [https://www.faa.gov/air_traffic/flight_info/aeronav/digital_products/cifp/ CIFP] which provides procedure data for airports under the purview of the FAA, namely the US.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a free project on [https://github.com/jojo2357/flightgear-star-sid-manager GitHub] that aims to take FAA data and format it into the LevelD required by FlightGear. For instructions on how to install, see [https://github.com/jojo2357/flightgear-star-sid-manager#installation this section] of the README.&lt;br /&gt;
&lt;br /&gt;
This project uses GitHub Actions in order to automatically update the procedures at the start of a new AIRAC cycle.&lt;br /&gt;
&lt;br /&gt;
== Commercial sources==&lt;br /&gt;
A process to import SID/STARs from Navigraph Level D (obtaining this data requires paid subscription to Navigraph) was described on the forum.&lt;br /&gt;
&lt;br /&gt;
Quoting here for reference:{{cite web&lt;br /&gt;
  |url=https://forum.flightgear.org/viewtopic.php?f=11&amp;amp;t=37975&amp;amp;start=15#p416078&lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: How to get SIDs and STARs in Airbus A320 mcdu &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; mpotra &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |quote = :&lt;br /&gt;
# Download Level-D navdata from Navigraph (On the Downloads -&amp;gt; Manual Download page)&lt;br /&gt;
# This is ZIP file with a Windows Installer executable inside. If you're on Windows already, run the installer, select a version (Prepar3D/PD3) and then skip to step 4.&lt;br /&gt;
# The executable is a Inno Setup executable. In Linux you can extract the contents with `innoextractor -e leveld_2311.exe` for example, which will output a &amp;quot;code$AppName&amp;quot; directory.&lt;br /&gt;
# In the extracted directory you'll find a &amp;quot;navdata&amp;quot; folder containing XML files with procedures for all airports for the AIRAC cycle with filenames as &amp;quot;&amp;lt;ICAO&amp;gt;.xml&amp;quot;.&lt;br /&gt;
# You can either rename in bulk or single file from &amp;quot;&amp;lt;ICAO&amp;gt;.xml&amp;quot; to &amp;quot;&amp;lt;ICAO&amp;gt;.procedures.xml&amp;quot; for desired airports.&lt;br /&gt;
# Create a new directory somewhere (anywhere you want) say &amp;quot;AIRAC/2311&amp;quot;, and inside it create the &amp;quot;Airports&amp;quot; directory. (camel-case formatted - &amp;quot;airports&amp;quot; with small letter A didn't work for me)&lt;br /&gt;
# Inside this &amp;quot;Airports&amp;quot; directory, create new subdirectories for each airport you want to bring in, using the [I]/[C]/[A] format. For example, if you want to add Vienna airport LOWW, create the subdirectories  &amp;quot;Airports/L/O/W&amp;quot; - do not create the fourth subdirectory [W] (it won't work)&lt;br /&gt;
# Copy the renamed file from step 5 into this last subdirectory. For example, copy &amp;quot;LOWW.procedures.xml&amp;quot; into &amp;quot;AIRAC/2311/Airports/L/O/W&amp;quot; directory, resulting in &amp;quot;AIRAC/2311/Airports/L/O/W/LOWW.procedures.xml&amp;quot;.  Example 2: for Budapest airport copy &amp;quot;LHBP.procedures.xml&amp;quot; into &amp;quot;AIRAC/2311/Airports/L/H/B&amp;quot;, resulting in &amp;quot;AIRAC/2311/Airports/L/H/B/LHBP.procedures.xml&amp;quot;&lt;br /&gt;
# In FlightGear, add the &amp;quot;AIRAC/2311&amp;quot; directory to your sceneries paths.&lt;br /&gt;
# Reload FlightGear and enjoy SID/STARs in your MCDU&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
==Related content==&lt;br /&gt;
===Wiki articles===&lt;br /&gt;
*[[Route manager]]&lt;br /&gt;
*[[Flightplan XML formats]]&lt;br /&gt;
&lt;br /&gt;
===Source code===&lt;br /&gt;
*{{flightgear source|path=src/Navaids/LevelDXML.hxx}}&lt;br /&gt;
*{{flightgear source|path=src/Navaids/LevelDXML.cxx}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Add_procedures_to_the_route_manager&amp;diff=138642</id>
		<title>Howto:Add procedures to the route manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Add_procedures_to_the_route_manager&amp;diff=138642"/>
		<updated>2023-11-08T18:06:48Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: Added description of Navigraph data extraction, from this post: https://forum.flightgear.org/viewtopic.php?f=11&amp;amp;t=37975&amp;amp;view=unread#p416078&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
{{Autoflight Navigation}}&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
A free way to get more SID and STAR procedures for the FlightGear Route Planner&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313123#p313123 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Sarith &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 24th, 2017 &lt;br /&gt;
  |added  =  Jun 24th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
Make some yourself. Charts are easy to find and a quick search will find you the syntax.&lt;br /&gt;
This is what FlightGear is all about; doing it yourself and sharing it to others.&lt;br /&gt;
A quick search would also find existing packages...&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313128#p313128 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Parnikkapore &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 24th, 2017 &lt;br /&gt;
  |added  =  Jun 24th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
SID and STAR procedures are found in the airport's procedures.xml file. There is at most one file per airport and it is located in the airport's root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;scenery directory&amp;amp;gt;/Airports/I/C/A/ICAO.procedures.xml&lt;br /&gt;
&lt;br /&gt;
Where ICAO is your airport code.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313362#p313362 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Parnikkapore &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 28th, 2017 &lt;br /&gt;
  |added  =  Jun 28th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to import SID or STAR procedures for VTSP (Phuket International Airport), you name the file VTSP.procedures.xml and put it in the &amp;amp;lt;scenery directory&amp;amp;gt;/Airports/V/T/S/ directory. In there you will likely find VTSP.twr.xml but not an existing VTSP.procedures.xml file.&lt;br /&gt;
Replace &amp;quot;VTSP&amp;quot; in the directory and procedures.xml file name with your airport code.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313409#p313409 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Parnikkapore &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 29th, 2017 &lt;br /&gt;
  |added  =  Jun 29th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
In the explanation below, the name like &amp;quot;ProceduresDB&amp;quot; is the tag - so it's actually &amp;lt;ProceduresDB&amp;gt; in the XML file.&lt;br /&gt;
The subsequent parameters, like &amp;quot;build&amp;quot; are attributes - so it's actually &amp;lt;ProceduresDB build=&amp;quot;&amp;quot;&amp;gt; in the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ProceduresDB [build] (one of these per file)&lt;br /&gt;
    |&lt;br /&gt;
    Airport [ICAOcode] (one of these per file)&lt;br /&gt;
        |&lt;br /&gt;
        Sid [Name, Runways (comma separated - example: &amp;quot;08L,08R&amp;quot;)]  (many of these per Airport)&lt;br /&gt;
            |&lt;br /&gt;
            Sid_Waypoint [ID (unique sequential integer)] (many of these per Sid)&lt;br /&gt;
                |&lt;br /&gt;
                Name&lt;br /&gt;
                Type&lt;br /&gt;
                Latitude&lt;br /&gt;
                Longitude&lt;br /&gt;
                Speed&lt;br /&gt;
                Altitude&lt;br /&gt;
                AltitudeCons&lt;br /&gt;
                AltitudeRestriction (one of &amp;quot;above&amp;quot; or &amp;quot;below&amp;quot; or &amp;quot;at&amp;quot;)&lt;br /&gt;
                Hdg_Crs (optional. example value = &amp;quot;1&amp;quot;)&lt;br /&gt;
                Hdg_Crs_Value (optional. heading degrees)&lt;br /&gt;
                Sp_Turn (optional. example value = &amp;quot;Auto&amp;quot;)&lt;br /&gt;
            ...&lt;br /&gt;
            Sid_Transition [Name] (just one of these per Sid)&lt;br /&gt;
                |&lt;br /&gt;
                SidTr_Waypoint [ID] (many of these per Sid_Transition)&lt;br /&gt;
&lt;br /&gt;
        Star [Name] (many of these per Airport)&lt;br /&gt;
            |&lt;br /&gt;
            Star_Waypoint [ID] (many of these per Star)&lt;br /&gt;
            ...&lt;br /&gt;
            Star_Transition [Name] (just one of these per Star)&lt;br /&gt;
                |&lt;br /&gt;
                StarTr_Waypoint [ID] (many of these per Star_Transition)&lt;br /&gt;
&lt;br /&gt;
        Approach [Name] (e.g., ILS08L - uses IL, if appropriate, and the runway name by convention)&lt;br /&gt;
            |&lt;br /&gt;
            App_Waypoint [ID]&lt;br /&gt;
            App_Transition [Name] (just one of these per Approach)&lt;br /&gt;
                |&lt;br /&gt;
                AppTr_Waypoint [ID] (many of these per App_Transition)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample procedures.xml File ==&lt;br /&gt;
&lt;br /&gt;
Here is a link to an example xml file which follows the format specified above: https://github.com/jojo2357/flightgear-star-sid-manager/blob/master/2020.4/Airports/K/A/T/KATL.procedures.xml&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=313583#p313583 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: routeplanner stir sid &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; eric &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 2nd, 2017 &lt;br /&gt;
  |added  =  Jul 2nd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Bash script ==&lt;br /&gt;
ZirconiumX wrote a bash script for putting the XML files into the FG required locations.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=280561#p280561 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Non-Navigraph SID/STAR xml files &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; ZirconiumX &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Mar 26th, 2016 &lt;br /&gt;
  |added  =  Mar 26th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&amp;lt;!-- Where do you even get the original files? Navigraph? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for file in $(ls *.xml)&lt;br /&gt;
do&lt;br /&gt;
   # First, rename all the files to the correct convention&lt;br /&gt;
   mv &amp;quot;$file&amp;quot; &amp;quot;${file%.xml}.procedures.xml&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   # Then move it to the correct place&lt;br /&gt;
   icao=${file%.xml}&lt;br /&gt;
   icao1=$(echo $icao | cut -c 1)&lt;br /&gt;
   icao2=$(echo $icao | cut -c 2)&lt;br /&gt;
   icao3=$(echo $icao | cut -c 3)&lt;br /&gt;
   mkdir -p $icao1/$icao2/$icao3&lt;br /&gt;
   mv &amp;quot;${icao}.procedures.xml&amp;quot; &amp;quot;$icao1/$icao2/$icao3/${icao}.procedures.xml&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing free community procedures ==&lt;br /&gt;
The FAA provides the [https://www.faa.gov/air_traffic/flight_info/aeronav/digital_products/cifp/ CIFP] which provides procedure data for airports under the purview of the FAA, namely the US.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a free project on [https://github.com/jojo2357/flightgear-star-sid-manager GitHub] that aims to take FAA data and format it into the LevelD required by FlightGear. For instructions on how to install, see [https://github.com/jojo2357/flightgear-star-sid-manager#installation this section] of the README.&lt;br /&gt;
&lt;br /&gt;
This project uses GitHub Actions in order to automatically update the procedures at the start of a new AIRAC cycle.&lt;br /&gt;
&lt;br /&gt;
== Commercial sources==&lt;br /&gt;
A process to import SID/STARs from Navigraph Level D (obtaining this data requires paid subscription to Navigraph) was described in this forum post: https://forum.flightgear.org/viewtopic.php?f=11&amp;amp;t=37975&amp;amp;start=15#p416078&lt;br /&gt;
&lt;br /&gt;
Quoting here for reference:&lt;br /&gt;
&lt;br /&gt;
# Download Level-D navdata from Navigraph (On the Downloads -&amp;gt; Manual Download page)&lt;br /&gt;
# This is ZIP file with a Windows Installer executable inside. If you're on Windows already, run the installer, select a version (Prepar3D/PD3) and then skip to step 4.&lt;br /&gt;
# The executable is a Inno Setup executable. In Linux you can extract the contents with `innoextractor -e leveld_2311.exe` for example, which will output a &amp;quot;code$AppName&amp;quot; directory.&lt;br /&gt;
# In the extracted directory you'll find a &amp;quot;navdata&amp;quot; folder containing XML files with procedures for all airports for the AIRAC cycle with filenames as &amp;quot;&amp;lt;ICAO&amp;gt;.xml&amp;quot;.&lt;br /&gt;
# You can either rename in bulk or single file from &amp;quot;&amp;lt;ICAO&amp;gt;.xml&amp;quot; to &amp;quot;&amp;lt;ICAO&amp;gt;.procedures.xml&amp;quot; for desired airports.&lt;br /&gt;
# Create a new directory somewhere (anywhere you want) say &amp;quot;AIRAC/2311&amp;quot;, and inside it create the &amp;quot;Airports&amp;quot; directory. (camel-case formatted - &amp;quot;airports&amp;quot; with small letter A didn't work for me)&lt;br /&gt;
# Inside this &amp;quot;Airports&amp;quot; directory, create new subdirectories for each airport you want to bring in, using the [I]/[C]/[A] format. For example, if you want to add Vienna airport LOWW, create the subdirectories  &amp;quot;Airports/L/O/W&amp;quot; - do not create the fourth subdirectory [W] (it won't work)&lt;br /&gt;
# Copy the renamed file from step 5 into this last subdirectory. For example, copy &amp;quot;LOWW.procedures.xml&amp;quot; into &amp;quot;AIRAC/2311/Airports/L/O/W&amp;quot; directory, resulting in &amp;quot;AIRAC/2311/Airports/L/O/W/LOWW.procedures.xml&amp;quot;.  Example 2: for Budapest airport copy &amp;quot;LHBP.procedures.xml&amp;quot; into &amp;quot;AIRAC/2311/Airports/L/H/B&amp;quot;, resulting in &amp;quot;AIRAC/2311/Airports/L/H/B/LHBP.procedures.xml&amp;quot;&lt;br /&gt;
# In FlightGear, add the &amp;quot;AIRAC/2311&amp;quot; directory to your sceneries paths.&lt;br /&gt;
# Reload FlightGear and enjoy SID/STARs in your MCDU&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
==Related content==&lt;br /&gt;
===Wiki articles===&lt;br /&gt;
*[[Route manager]]&lt;br /&gt;
*[[Flightplan XML formats]]&lt;br /&gt;
&lt;br /&gt;
===Source code===&lt;br /&gt;
*{{flightgear source|path=src/Navaids/LevelDXML.hxx}}&lt;br /&gt;
*{{flightgear source|path=src/Navaids/LevelDXML.cxx}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Revive_Atlas&amp;diff=138611</id>
		<title>Hackaton 2023 Proposal:Revive Atlas</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Revive_Atlas&amp;diff=138611"/>
		<updated>2023-11-05T17:49:08Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: Updated status of proposal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Title||'''&amp;lt;big&amp;gt;Revive Atlas&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Sponsor||MariuszXC&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Supporters||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Status||Idea (work based on old code base was discarded).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Summary||This Forum thread https://forum.flightgear.org/viewtopic.php?f=25&amp;amp;t=41780 mentions the root of the problem.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Background||External free map tile servers may be disappearing or going pay-for-access anytime. Atlas is an old FG subproject, providing map tile generation (.png, .jpg) using FG scenery as input. It needs updating, because scenery evolved.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Details||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Skills||C++, GL, possibly some concurrent programming.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Notes||Roadmap:&lt;br /&gt;
a. get tile generation correct (while doing that, look into possible multithreading of generating different tiles),&lt;br /&gt;
&lt;br /&gt;
b. make tiles available to Phi,&lt;br /&gt;
&lt;br /&gt;
c. make tiles available to glass cockpits,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remarks:&lt;br /&gt;
&lt;br /&gt;
1. (a) could be done as a periodic batch process or by FG on demand, in a background task.&lt;br /&gt;
&lt;br /&gt;
2. tiles for the same area may differ if user has custom scenery installed, therefore a local tile cache would have to be associated with the scenery. &lt;br /&gt;
&lt;br /&gt;
  Perhaps 'Atlas' subdirectory in every scenery tree?&lt;br /&gt;
&lt;br /&gt;
3. (b) and (c) could be: &lt;br /&gt;
&lt;br /&gt;
  * either local file server (uses user's computer and disk, is always up to date with any scenery they are using),&lt;br /&gt;
&lt;br /&gt;
  * or a network tile server (incurs infrastructure cost, possibly feasible only for standard scenery),&lt;br /&gt;
&lt;br /&gt;
  * or both.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Hackathon 2023 Ideas]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Additional_signals&amp;diff=138610</id>
		<title>Hackaton 2023 Proposal:Additional signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Additional_signals&amp;diff=138610"/>
		<updated>2023-11-05T15:39:30Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: Created page with &amp;quot;{{Hackathon Proposal 2023 | title          = Additional signals | sponsor        = MariuszXC | supporters     =  | summary        = Improving ground-referenced...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Title||'''&amp;lt;big&amp;gt;Additional signals&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Sponsor||MariuszXC&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Supporters||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Status||idea&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Summary||Introducing additional signals during FG startup sequence.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Background||On slower hardware the initial scene rendering may be well incomplete, while the user is already given synthetic ATC messages (This is 'some airport', cleared for takeoff RWY...). This is too early given the yet unfinished scene rendering (actually a splash screen may still be present for a while).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Details||Currently there is the 'fdm-initialised' signal, which is used in many models as input to listeners. FG might benefit from extending the idea and generating similar notifications in other places of startup sequence. Such signals could then be used to trigger services (like mentioned ATC) in a proper manner.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Skills||C++, knowledge of FG core and core/Nasal interface.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Notes||Roadmap:&lt;br /&gt;
&lt;br /&gt;
# identify critical events which should generate notifications (transition from splash to rendered scene looks like one such place)&lt;br /&gt;
# what to do when sim restarts?&lt;br /&gt;
# implementation and testing.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Hackathon 2023 Ideas]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Road_traffic_realism&amp;diff=138609</id>
		<title>Hackaton 2023 Proposal:Road traffic realism</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Road_traffic_realism&amp;diff=138609"/>
		<updated>2023-11-05T15:08:29Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: Created page with &amp;quot;{{Hackathon Proposal 2021 | title          = Multiplayer Improvements | sponsor        = MariuszXC | supporters     = MariuszXC | summary        = Improving ground-referenced...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Title||'''&amp;lt;big&amp;gt;Road Traffic Realism&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Sponsor||MariuszXC&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Supporters||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Status||Idea&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Summary||Both RH (right hand) and LH (left hand) traffic rules are in force worldwide (plus chaotic driving in some areas, but we can skip that). Currently traffic shader implements only RH traffic.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Background||It is really quite disturbing to fly VFR near London and see RH traffic down below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Details||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Skills||Shaders&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Notes||Idea may look easy, but may require adding a LH/RH property to terrain and feeding that info to the traffic shader.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Hackathon 2023 Ideas]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Improve_MP_realism_at_night&amp;diff=138608</id>
		<title>Hackaton 2023 Proposal:Improve MP realism at night</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Improve_MP_realism_at_night&amp;diff=138608"/>
		<updated>2023-11-05T15:01:28Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: Created page with &amp;quot;{{Hackathon Proposal 2021 | title          = Multiplayer Improvements | sponsor        = MariuszXC | supporters     = MariuszXC | summary        = Improving ground-referenced...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Title||'''MP Realism at Night'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Sponsor||MariuszXC&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Supporters||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Status||Work not yet started. Some ideas below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Summary||At night models can disappear from view fast (as they should), but their navlights should remain visible at much greater distances (atmospheric conditions related).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Background||Model past LOD range will be removed from view completely, including lights. This is OK-ish at daytime, but spoils the realism at night, where lights are often the only means to spot other traffic. Perhaps a yet one more LOD (automatic, weather dependant?) setting is needed for lights objects?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Details||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Skills||C++, OSG, maybe XML if model-side modifications are deemed necessary.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Notes||Some lights are animated in a unique pattern (e.g. strobe lights). All lights may be switched on or off, this should follow the logic implemented model-side..&lt;br /&gt;
&lt;br /&gt;
So a solution which keeps the remote (AI) model logic running, but hides most of the model from view (everything except lights?) might do the trick.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remarks:&lt;br /&gt;
&lt;br /&gt;
1. what about directional visiblity / view obscuring if rest of a model is idden? Maybe some 'bare bones' model is necessary?&lt;br /&gt;
&lt;br /&gt;
2. identification of model parts (i.e. lights) to keep showing.&lt;br /&gt;
&lt;br /&gt;
3. weather conditions integration - visibility range changing with weather.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Hackathon 2023 Ideas]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Revive_Atlas&amp;diff=138607</id>
		<title>Hackaton 2023 Proposal:Revive Atlas</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hackaton_2023_Proposal:Revive_Atlas&amp;diff=138607"/>
		<updated>2023-11-05T14:43:01Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: Created page with &amp;quot;{{Hackathon Proposal 2021 | title          = Multiplayer Improvements | sponsor        = MariuszXC | supporters     = MariuszXC | summary        = Improving ground-referenced...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Title||'''&amp;lt;big&amp;gt;Revive Atlas&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Sponsor||MariuszXC&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Supporters||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Status||Work already started, repo (temporary) created on GitHub&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Summary||This Forum thread https://forum.flightgear.org/viewtopic.php?f=25&amp;amp;t=41780 mentions the root of the problem and contains links to work already done, as well as some description of present issues. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Background||External free map tile servers may be disappearing or going pay-for-access anytime. Atlas is an old FG subproject, providing map tile generation (.png, .jpg) using FG scenery as input. It needs updating, because scenery evolved.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Details||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Skills||C++, GL, possibly some concurrent programming.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Notes||Roadmap:&lt;br /&gt;
a. get tile generation correct (while doing that, look into possible multithreading of generating different tiles),&lt;br /&gt;
&lt;br /&gt;
b. make tiles available to Phi,&lt;br /&gt;
&lt;br /&gt;
c. make tiles available to glass cockpits,&lt;br /&gt;
&lt;br /&gt;
d. consider different scale/LOD for zooming in/out.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remarks:&lt;br /&gt;
&lt;br /&gt;
1. (a) could be done as a periodic batch process or by FG on demand, in a background task.&lt;br /&gt;
&lt;br /&gt;
2. tiles for the same area may differ if user has custom scenery installed, therefore a local tile cache would have to be associated with the scenery. &lt;br /&gt;
&lt;br /&gt;
  Perhaps 'Atlas' subdirectory in every scenery tree?&lt;br /&gt;
&lt;br /&gt;
3. (b) and (c) could be: &lt;br /&gt;
&lt;br /&gt;
  * either local file server (uses user's computer and disk, is always up to date with any scenery they are using),&lt;br /&gt;
&lt;br /&gt;
  * or a network tile server (incurs infrastructure cost, possibly feasible only for standard scenery),&lt;br /&gt;
&lt;br /&gt;
  * or both.&lt;br /&gt;
&lt;br /&gt;
4. (d) will be heavy on disk space use.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Hackathon 2023 Ideas]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Transponder&amp;diff=137670</id>
		<title>Transponder</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Transponder&amp;diff=137670"/>
		<updated>2023-05-11T21:59:26Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: updated volts property&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Transponders''' are radio beacons which make [[aircraft]] more identifiable on [[ATC]] displays and systems. Modern transponders support transmitting additional data such as an identification ('squawk') code and aircraft altitude. See more at {{wikipedia|Transponder (aeronautics)}}.&lt;br /&gt;
&lt;br /&gt;
== Id Codes ==&lt;br /&gt;
Id or 'squawk' codes aid ATC in identify aircraft positively. 1200 is the standard code for VFR flight (in the US; Europe uses 7000), IFR aircraft will typically be advised a code on delivery clearance or startup.&lt;br /&gt;
&lt;br /&gt;
Normal code digits are 0..7; 0000 is reserved for military use, and there are other standard codes, such as 7600 for radio comms failure. See the Wikipedia page for many more examples.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
{{hatnote|For a thorough description, see {{wikipedia|Aviation transponder interrogation modes}}.}}&lt;br /&gt;
&lt;br /&gt;
Civilian Mode-S and Mode-C both transmit pressure altitude (at 10-foot and 100-foot precision, respectively). To do this the transponder needs an altitude source. In real-life this can be a separate box called an encoder, or may be derived for FMC / ADIRU sources. It's important to note this altitude is referenced to standard pressure (29.92 inHg / 1012Hpa), and not corrected for actual barometric pressure in the local environment.&lt;br /&gt;
&lt;br /&gt;
Additional support for military modes is possible if anyone wishes to add it.&lt;br /&gt;
&lt;br /&gt;
== Configuration in FlightGear ==&lt;br /&gt;
Transponder support was overhauled in May 2013; earlier versions (2.10 and prior) have different support and are not documented here. Updating an aircraft to use the new config is straightforward. Key transponder properties (altitude, ident and transmitted-id) are now sent via the MP protocols for use in ATC clients.&lt;br /&gt;
&lt;br /&gt;
The default altimeter can act as an altitude encoder; in its configuration, set either or both of the following boolean flags:&lt;br /&gt;
&lt;br /&gt;
* encode-mode-c&lt;br /&gt;
* encode-mode-s&lt;br /&gt;
&lt;br /&gt;
The transponder has various config properties:&lt;br /&gt;
&lt;br /&gt;
* '''minimum-supply-volts''': required DV volts for operations, defaults to 8.0 ''(old '''bus-volts''' is now deprecated)''&lt;br /&gt;
* '''encoder-path''': defaults to '/instruments/altimeter', but can be changed to any other location. The transponder looks for child properties 'mode-c-alt-ft' and 'mode-s-alt-ft' at this path for altitude data.&lt;br /&gt;
* '''kt70-compatibility''': boolean, default to false. Set this to enable legacy compatibility with the old KT-70 C++ instrument. Do not use in new/updated aircraft!&lt;br /&gt;
* '''mode''': this is 0 for Mode-A, 1 for Mode-C and 2 for Mode-S. Other modes can be added, ask on the [[Mailing list|devel list]]!&lt;br /&gt;
&lt;br /&gt;
=== Run-time properties ===&lt;br /&gt;
* '''altitude''': gives the transmitted altitude in feet (or -9999 for invalid)&lt;br /&gt;
* '''altitude-valid''': indicates if altitude value is valid data or not &lt;br /&gt;
* '''id-code''': allows the id-code to be read and set&lt;br /&gt;
* '''serviceable''': can be set to control the instrument serviceability&lt;br /&gt;
* '''transmitted-id''': gives the value being transmitted, including over the network via MP&lt;br /&gt;
&lt;br /&gt;
==== Input properties ====&lt;br /&gt;
These live under &amp;lt;tt&amp;gt;/inputs&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* '''knob-mode''': sets the transponder operating mode. This corresponds to the KT-70 knob positions for convenience, but the actual modes should work for any transponder instrument. Knob modes are documented below&lt;br /&gt;
* '''ident-btn''': can be set to place the transponder in ident mode for 18 seconds. Note this property is not spring-loaded, i.e you must manually reset it to false&lt;br /&gt;
* '''digit[0]-[4]''': properties allow the id code individual digits to be read and set&lt;br /&gt;
&lt;br /&gt;
In KT-70 compatibility mode, additional properties are read and set, to preserve legacy aircraft. Do not use these properties in new aircraft.&lt;br /&gt;
&lt;br /&gt;
==== Knob/Functional Modes ====&lt;br /&gt;
* 0 - off&lt;br /&gt;
* 1 - standby, basically the same as off for the C++ code (3D instrument would power up the display, presumably)&lt;br /&gt;
* 2 - test, again the C++ largely ignores this since the test configuration of real-world instruments varies. In particular the unit does *not* set altitude or transmitted-id to any test values, you should do that in your own logic. (Maybe we should allow the test values to be defined int he config section?)&lt;br /&gt;
* 3 - Ground mode, responds to altitude interrogation but does not broadcast an ID. This would typically be used while taxiing prior to takeoff.&lt;br /&gt;
* 4 - On, normal operation but altitude transmission is inhibited&lt;br /&gt;
* 5 - Alt, same as on but altitude is broadcast if transponder was configured in Mode-S or Mode-C&lt;br /&gt;
&lt;br /&gt;
=== Generic transponder ===&lt;br /&gt;
Below are all available property that you can set for your instrumentation.xml file :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;transponder&amp;gt;&lt;br /&gt;
    &amp;lt;name type=&amp;quot;string&amp;quot;&amp;gt;transponder&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;number type=&amp;quot;int&amp;quot;&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
    &amp;lt;mode type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/mode&amp;gt; &amp;lt;!-- 0 = Mode A, 1 = Mode C, 2 = Mode S --&amp;gt;&lt;br /&gt;
    &amp;lt;minimum-supply-volts type=&amp;quot;double&amp;quot;&amp;gt;8.0&amp;lt;/minimum-supply-volts&amp;gt;&lt;br /&gt;
    &amp;lt;encoder-path type=&amp;quot;string&amp;quot;&amp;gt;/instrumentation/altimeter&amp;lt;/encoder-path&amp;gt;&lt;br /&gt;
    &amp;lt;kt70-compatibility type=&amp;quot;bool&amp;quot;&amp;gt;0&amp;lt;/kt70-compatibility&amp;gt;&lt;br /&gt;
    &amp;lt;auto-ground&amp;gt;...&amp;lt;/auto-ground&amp;gt; &amp;lt;!-- input for Mode-S automatic GND bit --&amp;gt;&lt;br /&gt;
    &amp;lt;airspeed-path&amp;gt;...&amp;lt;/airspeed-path&amp;gt;&lt;br /&gt;
    &amp;lt;mach-path&amp;gt;...&amp;lt;/mach-path&amp;gt;&lt;br /&gt;
  &amp;lt;/transponder&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Please note that ''&amp;lt;bus-volts&amp;gt;'' is now '''deprecated'''. Use ''&amp;lt;minimum-supply-volts&amp;gt;'' instead.&lt;br /&gt;
 The following is a copy of a comment in instrument source, explaining the use of Mode-S related properties&lt;br /&gt;
 &amp;lt;code&amp;gt;&lt;br /&gt;
 // Mode-S transponders (configured with mode = 2) can transmit a ground bit to&lt;br /&gt;
 // indicate ground operation. If auto-ground is not defined, the ground bit is&lt;br /&gt;
 // switched manually by setting the transponder knob to GND. If auto-ground is&lt;br /&gt;
 // defined, the transponder simulates automatic switching of the ground bit&lt;br /&gt;
 // using the value of the property defined in auto-ground.&lt;br /&gt;
 //&lt;br /&gt;
 // For a squat switch, use &amp;quot;/gear/gear/wow&amp;quot;. For automatic switching based on&lt;br /&gt;
 // airspeed, use a property rule to make a new boolean property that indicates,&lt;br /&gt;
 // for example, airspeed &amp;lt; 80, and reference your new property in auto-ground.&lt;br /&gt;
 //&lt;br /&gt;
 // Note that Mode-A and Mode-C transponders do not transmit a ground bit, even&lt;br /&gt;
 // if the transponder knob is set to the GND position.&lt;br /&gt;
 //&lt;br /&gt;
 // Mode-S transponders also transmit indicated airspeed and Mach number. The&lt;br /&gt;
 // default sources are &amp;quot;/instrumentation/airspeed-indicator/indicated-speed-kt&amp;quot;&lt;br /&gt;
 // and &amp;quot;.../indicated-mach&amp;quot;, but this can be changed by setting &amp;quot;airspeed-path&amp;quot;&lt;br /&gt;
 // and &amp;quot;mach-path&amp;quot; properties respectively as shown above.&lt;br /&gt;
 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related content==&lt;br /&gt;
===Wiki articles===&lt;br /&gt;
*[[Howto:Develop an aircraft transponder in Nasal]] – Most probably obsolete&lt;br /&gt;
*[[FLARM]]&lt;br /&gt;
*[[Multiplayer protocol]] – The IDs 1501-1503 are earmarked for transmitting transponder properties&lt;br /&gt;
*[[OpenRadar: Transponder]]&lt;br /&gt;
*[[Traffic alert and collision avoidance system]]&lt;br /&gt;
&lt;br /&gt;
===Forum topics===&lt;br /&gt;
*[https://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=31492 Transponder properties over MP] (January-June 2017)&lt;br /&gt;
*[https://forum.flightgear.org/viewtopic.php?f=75&amp;amp;t=19826 Transponder over network] (April-December 2018)&lt;br /&gt;
*[https://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=6395 Transponder] (November 2009-December 2010)&lt;br /&gt;
&lt;br /&gt;
===Developer mailing list===&lt;br /&gt;
*[https://sourceforge.net/p/flightgear/mailman/message/30785263/ &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Improve tranponder instrument] (Apr 2009)&lt;br /&gt;
*[https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/1388915221.2195.15.camel%40duter.localdomain/#msg31810053 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Transponder Ident not transmitted via MP Protocol?] (Jan-Feb 2014)&lt;br /&gt;
&lt;br /&gt;
===Source code===&lt;br /&gt;
*{{flightgear source|src/Instrumentation/transponder.hxx}}&lt;br /&gt;
*{{flightgear source|src/Instrumentation/transponder.cxx}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement]]&lt;br /&gt;
[[Category:Aircraft instruments]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Transponder&amp;diff=137669</id>
		<title>Transponder</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Transponder&amp;diff=137669"/>
		<updated>2023-05-11T21:51:04Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Generic transponder */ updated with Mode-S related documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Transponders''' are radio beacons which make [[aircraft]] more identifiable on [[ATC]] displays and systems. Modern transponders support transmitting additional data such as an identification ('squawk') code and aircraft altitude. See more at {{wikipedia|Transponder (aeronautics)}}.&lt;br /&gt;
&lt;br /&gt;
== Id Codes ==&lt;br /&gt;
Id or 'squawk' codes aid ATC in identify aircraft positively. 1200 is the standard code for VFR flight (in the US; Europe uses 7000), IFR aircraft will typically be advised a code on delivery clearance or startup.&lt;br /&gt;
&lt;br /&gt;
Normal code digits are 0..7; 0000 is reserved for military use, and there are other standard codes, such as 7600 for radio comms failure. See the Wikipedia page for many more examples.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
{{hatnote|For a thorough description, see {{wikipedia|Aviation transponder interrogation modes}}.}}&lt;br /&gt;
&lt;br /&gt;
Civilian Mode-S and Mode-C both transmit pressure altitude (at 10-foot and 100-foot precision, respectively). To do this the transponder needs an altitude source. In real-life this can be a separate box called an encoder, or may be derived for FMC / ADIRU sources. It's important to note this altitude is referenced to standard pressure (29.92 inHg / 1012Hpa), and not corrected for actual barometric pressure in the local environment.&lt;br /&gt;
&lt;br /&gt;
Additional support for military modes is possible if anyone wishes to add it.&lt;br /&gt;
&lt;br /&gt;
== Configuration in FlightGear ==&lt;br /&gt;
Transponder support was overhauled in May 2013; earlier versions (2.10 and prior) have different support and are not documented here. Updating an aircraft to use the new config is straightforward. Key transponder properties (altitude, ident and transmitted-id) are now sent via the MP protocols for use in ATC clients.&lt;br /&gt;
&lt;br /&gt;
The default altimeter can act as an altitude encoder; in its configuration, set either or both of the following boolean flags:&lt;br /&gt;
&lt;br /&gt;
* encode-mode-c&lt;br /&gt;
* encode-mode-s&lt;br /&gt;
&lt;br /&gt;
The transponder has various config properties:&lt;br /&gt;
&lt;br /&gt;
* '''bus-volts''': required DV volts for operations, defaults to 8.0&lt;br /&gt;
* '''encoder-path''': defaults to '/instruments/altimeter', but can be changed to any other location. The transponder looks for child properties 'mode-c-alt-ft' and 'mode-s-alt-ft' at this path for altitude data.&lt;br /&gt;
* '''kt70-compatibility''': boolean, default to false. Set this to enable legacy compatibility with the old KT-70 C++ instrument. Do not use in new/updated aircraft!&lt;br /&gt;
* '''mode''': this is 0 for Mode-A, 1 for Mode-C and 2 for Mode-S. Other modes can be added, ask on the [[Mailing list|devel list]]!&lt;br /&gt;
&lt;br /&gt;
=== Run-time properties ===&lt;br /&gt;
* '''altitude''': gives the transmitted altitude in feet (or -9999 for invalid)&lt;br /&gt;
* '''altitude-valid''': indicates if altitude value is valid data or not &lt;br /&gt;
* '''id-code''': allows the id-code to be read and set&lt;br /&gt;
* '''serviceable''': can be set to control the instrument serviceability&lt;br /&gt;
* '''transmitted-id''': gives the value being transmitted, including over the network via MP&lt;br /&gt;
&lt;br /&gt;
==== Input properties ====&lt;br /&gt;
These live under &amp;lt;tt&amp;gt;/inputs&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* '''knob-mode''': sets the transponder operating mode. This corresponds to the KT-70 knob positions for convenience, but the actual modes should work for any transponder instrument. Knob modes are documented below&lt;br /&gt;
* '''ident-btn''': can be set to place the transponder in ident mode for 18 seconds. Note this property is not spring-loaded, i.e you must manually reset it to false&lt;br /&gt;
* '''digit[0]-[4]''': properties allow the id code individual digits to be read and set&lt;br /&gt;
&lt;br /&gt;
In KT-70 compatibility mode, additional properties are read and set, to preserve legacy aircraft. Do not use these properties in new aircraft.&lt;br /&gt;
&lt;br /&gt;
==== Knob/Functional Modes ====&lt;br /&gt;
* 0 - off&lt;br /&gt;
* 1 - standby, basically the same as off for the C++ code (3D instrument would power up the display, presumably)&lt;br /&gt;
* 2 - test, again the C++ largely ignores this since the test configuration of real-world instruments varies. In particular the unit does *not* set altitude or transmitted-id to any test values, you should do that in your own logic. (Maybe we should allow the test values to be defined int he config section?)&lt;br /&gt;
* 3 - Ground mode, responds to altitude interrogation but does not broadcast an ID. This would typically be used while taxiing prior to takeoff.&lt;br /&gt;
* 4 - On, normal operation but altitude transmission is inhibited&lt;br /&gt;
* 5 - Alt, same as on but altitude is broadcast if transponder was configured in Mode-S or Mode-C&lt;br /&gt;
&lt;br /&gt;
=== Generic transponder ===&lt;br /&gt;
Below are all available property that you can set for your instrumentation.xml file :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;transponder&amp;gt;&lt;br /&gt;
    &amp;lt;name type=&amp;quot;string&amp;quot;&amp;gt;transponder&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;number type=&amp;quot;int&amp;quot;&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
    &amp;lt;mode type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/mode&amp;gt; &amp;lt;!-- 0 = Mode A, 1 = Mode C, 2 = Mode S --&amp;gt;&lt;br /&gt;
    &amp;lt;minimum-supply-volts type=&amp;quot;double&amp;quot;&amp;gt;8.0&amp;lt;/minimum-supply-volts&amp;gt;&lt;br /&gt;
    &amp;lt;encoder-path type=&amp;quot;string&amp;quot;&amp;gt;/instrumentation/altimeter&amp;lt;/encoder-path&amp;gt;&lt;br /&gt;
    &amp;lt;kt70-compatibility type=&amp;quot;bool&amp;quot;&amp;gt;0&amp;lt;/kt70-compatibility&amp;gt;&lt;br /&gt;
    &amp;lt;auto-ground&amp;gt;...&amp;lt;/auto-ground&amp;gt; &amp;lt;!-- input for Mode-S automatic GND bit --&amp;gt;&lt;br /&gt;
    &amp;lt;airspeed-path&amp;gt;...&amp;lt;/airspeed-path&amp;gt;&lt;br /&gt;
    &amp;lt;mach-path&amp;gt;...&amp;lt;/mach-path&amp;gt;&lt;br /&gt;
  &amp;lt;/transponder&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Please note that ''&amp;lt;bus-volts&amp;gt;'' is now '''deprecated'''. Use ''&amp;lt;minimum-supply-volts&amp;gt;'' instead.&lt;br /&gt;
 The following is a copy of a comment in instrument source, explaining the use of Mode-S related properties&lt;br /&gt;
 &amp;lt;code&amp;gt;&lt;br /&gt;
 // Mode-S transponders (configured with mode = 2) can transmit a ground bit to&lt;br /&gt;
 // indicate ground operation. If auto-ground is not defined, the ground bit is&lt;br /&gt;
 // switched manually by setting the transponder knob to GND. If auto-ground is&lt;br /&gt;
 // defined, the transponder simulates automatic switching of the ground bit&lt;br /&gt;
 // using the value of the property defined in auto-ground.&lt;br /&gt;
 //&lt;br /&gt;
 // For a squat switch, use &amp;quot;/gear/gear/wow&amp;quot;. For automatic switching based on&lt;br /&gt;
 // airspeed, use a property rule to make a new boolean property that indicates,&lt;br /&gt;
 // for example, airspeed &amp;lt; 80, and reference your new property in auto-ground.&lt;br /&gt;
 //&lt;br /&gt;
 // Note that Mode-A and Mode-C transponders do not transmit a ground bit, even&lt;br /&gt;
 // if the transponder knob is set to the GND position.&lt;br /&gt;
 //&lt;br /&gt;
 // Mode-S transponders also transmit indicated airspeed and Mach number. The&lt;br /&gt;
 // default sources are &amp;quot;/instrumentation/airspeed-indicator/indicated-speed-kt&amp;quot;&lt;br /&gt;
 // and &amp;quot;.../indicated-mach&amp;quot;, but this can be changed by setting &amp;quot;airspeed-path&amp;quot;&lt;br /&gt;
 // and &amp;quot;mach-path&amp;quot; properties respectively as shown above.&lt;br /&gt;
 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related content==&lt;br /&gt;
===Wiki articles===&lt;br /&gt;
*[[Howto:Develop an aircraft transponder in Nasal]] – Most probably obsolete&lt;br /&gt;
*[[FLARM]]&lt;br /&gt;
*[[Multiplayer protocol]] – The IDs 1501-1503 are earmarked for transmitting transponder properties&lt;br /&gt;
*[[OpenRadar: Transponder]]&lt;br /&gt;
*[[Traffic alert and collision avoidance system]]&lt;br /&gt;
&lt;br /&gt;
===Forum topics===&lt;br /&gt;
*[https://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=31492 Transponder properties over MP] (January-June 2017)&lt;br /&gt;
*[https://forum.flightgear.org/viewtopic.php?f=75&amp;amp;t=19826 Transponder over network] (April-December 2018)&lt;br /&gt;
*[https://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=6395 Transponder] (November 2009-December 2010)&lt;br /&gt;
&lt;br /&gt;
===Developer mailing list===&lt;br /&gt;
*[https://sourceforge.net/p/flightgear/mailman/message/30785263/ &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Improve tranponder instrument] (Apr 2009)&lt;br /&gt;
*[https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/1388915221.2195.15.camel%40duter.localdomain/#msg31810053 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Transponder Ident not transmitted via MP Protocol?] (Jan-Feb 2014)&lt;br /&gt;
&lt;br /&gt;
===Source code===&lt;br /&gt;
*{{flightgear source|src/Instrumentation/transponder.hxx}}&lt;br /&gt;
*{{flightgear source|src/Instrumentation/transponder.cxx}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement]]&lt;br /&gt;
[[Category:Aircraft instruments]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FGCom-mumble&amp;diff=137566</id>
		<title>FGCom-mumble</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FGCom-mumble&amp;diff=137566"/>
		<updated>2023-04-17T15:47:29Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Servers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''FGCom-mumble''' simulates radio communication based on the VoIP software [https://www.mumble.info/ Mumble]. It integrates fully with the radio stack of your FlightGear plane, allowing you to communicate with other pilots and airspace controllers during your flight. It simulates a global, continuous radio frequency spectrum.&lt;br /&gt;
&lt;br /&gt;
FGCom-mumble is an alternative to the already known [[FGCom]] client and [https://forum.flightgear.org/viewtopic.php?t=30691 FGExtend].&lt;br /&gt;
&lt;br /&gt;
FGCom-mumble leverages the plugin mechanism introduced by Mumble 1.4.0 and just needs a precompiled plugin loaded by a stock Mumble client.&lt;br /&gt;
You can download the latest release from https://github.com/hbeni/fgcom-mumble/releases.&lt;br /&gt;
&lt;br /&gt;
{{Infobox Software&lt;br /&gt;
|title               = FGCom-mumble&lt;br /&gt;
|logo                = FGCom-mumble_logo.png|128px&lt;br /&gt;
|developedby         = Benedikt Hallinger&lt;br /&gt;
|developmentstatus   = Active&lt;br /&gt;
|type                = Radio/Communication&lt;br /&gt;
|latestrelease       = [https://github.com/hbeni/fgcom-mumble/releases see release page]&lt;br /&gt;
|initialrelease      = 1.0.0 (17.01.2022)&lt;br /&gt;
|writtenin           = C++/Lua/Java/PHP&lt;br /&gt;
|os                  = Windows, GNU/Linux, MacOS&lt;br /&gt;
|license             = [[GNU General Public License]] v3&lt;br /&gt;
|website             = https://github.com/hbeni/fgcom-mumble&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Servers ==&lt;br /&gt;
&amp;lt;!-- Maybe we can switch to mumble://radio-mumble.flightgear.fr/fgcom-mumble some time... --&amp;gt;&lt;br /&gt;
*The main FGCom-mumble test server is &amp;lt;code&amp;gt;mumble://fgcom.hallinger.org/fgcom-mumble&amp;lt;/code&amp;gt;&lt;br /&gt;
*The status page for that service showing all connected clients is at: https://fgcom.hallinger.org/&lt;br /&gt;
*On first connection Mumble client will ask whether to trust the certificate presented by the server. Currently the server certificate has following details:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Common Name: Murmur Autogenerated Certificate v2&amp;lt;/br&amp;gt;&lt;br /&gt;
Valid from: Mon. Dec. 7 21:12:40 2020 GMT&amp;lt;/br&amp;gt;&lt;br /&gt;
Valid to: Sun. Dec. 2 21:12:40 2040 GMT&amp;lt;/br&amp;gt;&lt;br /&gt;
Serial: 3031&amp;lt;/br&amp;gt;&lt;br /&gt;
Public Key: 2048 bits RSA&amp;lt;/br&amp;gt;&lt;br /&gt;
Digest (SHA-1): E6:9A:FA:62:2C:48:4D:73:95:D7:EE:0E:14:0D:5A:C2:AE:14:1C:31&amp;lt;/br&amp;gt;&lt;br /&gt;
Digest (SHA-256): 50:CE:17:63:FB:FC:40:03:B4:BF:8F:1F:84:35:4C:BA:5D:5C:BE:E4:AD:F9:8C:D8:45:1F:C7:28:EB:CA:3A:C0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is always a good idea to verify if the signature matches.&lt;br /&gt;
&lt;br /&gt;
==Project main goals==&lt;br /&gt;
*Provide communication with geographic and channel separation&lt;br /&gt;
*Provide a realistic radio simulation&lt;br /&gt;
*Ease of use for the end user/pilot&lt;br /&gt;
*Arbitrary frequency support&lt;br /&gt;
*ATIS recording and playback&lt;br /&gt;
*Radio station broadcast support&lt;br /&gt;
*Landline/Intercom support&lt;br /&gt;
*RDF detection for clients&lt;br /&gt;
*Ease of server side installation and operation&lt;br /&gt;
*Standalone nature (no dependency on FlightGear)&lt;br /&gt;
* Capability to be integrated into FlightGear, with the option to support third party applications (ATC, but also other flight simulators)&lt;br /&gt;
*Modularity, so individual component implementations can be switched and its easy to add features&lt;br /&gt;
*Good and complete documentation&lt;br /&gt;
&lt;br /&gt;
== Installation and setup==&lt;br /&gt;
The latest release can be fetched from [https://github.com/hbeni/fgcom-mumble/releases GitHub] ([https://github.com/hbeni/fgcom-mumble/actions nightly build] also has debug versions).&lt;br /&gt;
&lt;br /&gt;
The provided [https://github.com/hbeni/fgcom-mumble/blob/master/README.md#install--setup-for-the-client README] has detailed instructions on the needed prerequisites and installation procedures.&lt;br /&gt;
&lt;br /&gt;
Someone even made an install video :) https://www.youtube.com/watch?v=jTRzfVfkgZE and https://www.youtube.com/watch?v=boHsPVTSddk&lt;br /&gt;
(thanks mate, well done! however HF is actually simulated already :)&lt;br /&gt;
&lt;br /&gt;
In short:&lt;br /&gt;
* Have a stock Mumble client &amp;gt;= 1.4 running, and load the plugin (mumble settings/plugins page)&lt;br /&gt;
* Join a channel named `fgcom-mumble` (on a &amp;gt;= 1.4 mumble server)&lt;br /&gt;
* Add the `fgfs-addon` folder of the client release as FlightGear Addon in your launcher&lt;br /&gt;
* Start FlightGear and use your plane's radio stack (it uses default FGCom buttons, see below)&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
FlightGear's FGCom-mumble protocol uses the default FGCom buttons:&lt;br /&gt;
When you want to talk on COM1 you have to press {{Key press|Space}}. While transmitting you can not hear other pilots trough the used radio (they are half-duplex).&lt;br /&gt;
You can also talk on COM2 by pressing {{Key press|Shift|Space}}.&lt;br /&gt;
For COM3 you need to define a custom keybind, or use the COMBar (open from ''Menu/Multiplayer/FGCom-mumble'').&lt;br /&gt;
&lt;br /&gt;
If you want to try it out without FlightGear, you can also start the supplied RadioGUI.&lt;br /&gt;
&lt;br /&gt;
=== How to test your setup?===&lt;br /&gt;
First, make sure Mumble is working reliably by talking to other people. Either disable the plugin, or be sure you are outside any radio channel (starting with `fgcom-mumble`).&lt;br /&gt;
&lt;br /&gt;
The plugin alters Mumble's receiving audio stream. It adds static noise depending on the radio signal quality, or cancels out all audio when not in range.&lt;br /&gt;
&lt;br /&gt;
If the server supports it (in essence there is a bot-manager running and a `fgcom-recorder-bot` listening) you may do a traditional echo test by tuning `910.00` and start to talk. The radio bot will record that and spawn an echo bot at your position, replaying your message (so you will hear yourself like others will hear you).&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
For troubleshooting, refer to the projects [https://github.com/hbeni/fgcom-mumble/blob/master/README.md#troubleshooting README] as it has further suggestions.&lt;br /&gt;
&lt;br /&gt;
===Compatibility ===&lt;br /&gt;
FGCom-mumble supports the legacy FGCom UDP protocol and thus should be compatible to clients supporting that. However, it also features some new UDP fields.&lt;br /&gt;
&lt;br /&gt;
*FlightGear is supported through an [https://github.com/hbeni/fgcom-mumble/tree/master/client/fgfs-addon FlightGear addon]. This assumes the default radio implementation and works with at least the C172P and the C182S.&lt;br /&gt;
*[[ATC-pie]] has built in support already (be sure to activate &amp;quot;FGCom-mumble&amp;quot; instead of just &amp;quot;FGCom&amp;quot; in the settings).&lt;br /&gt;
*[[OpenRadar]] currently supports just COM1 ([https://sourceforge.net/p/openradar/tickets/5/ ticket pending]). To use COM2 and more, you need to either start several mumble instances, or use FGCom-mumble's RadioGUI.&lt;br /&gt;
:There is a patched version of OpenRadar with FGCom-mumble and  8.33 channel tuning support available here: http://fgcom.hallinger.org/OpenRadar_fgcom-mumble.jar&lt;br /&gt;
&lt;br /&gt;
====Known incompatibilities====&lt;br /&gt;
* The UFO aircraft rebinds {{Key press|Space}} so you can't transmit on the radio. As a workaround you can use the COMBar that comes integrated with the FGFS addon.&lt;br /&gt;
&lt;br /&gt;
==RadioGUI==&lt;br /&gt;
The FGCom-mumble RadioGUI is a small Java 8 application that can send the FGCom-mumble UDP messages to the Mumble plugin.&lt;br /&gt;
&lt;br /&gt;
Inside the GUI, you can pick your location from a map and then setup and use your radio stack.&lt;br /&gt;
That said, the RadiGUI can be used instead (or additionally to) FGFS to participate on the simulated radio net.&lt;br /&gt;
&lt;br /&gt;
==Server side==&lt;br /&gt;
By design, all that is needed is a standard Murmur server (version 1.4.0 or later) and a specially named channel (it has to start with `fgcom-mumble`). This is enough to let the plugin do its work. The entire channel is treated as a single, worldwide continuous radio frequency spectrum.&lt;br /&gt;
&lt;br /&gt;
Additional features are implemented using server side Lua bots (which may run somewhere else):&lt;br /&gt;
* ATIS recording and broadcasting&lt;br /&gt;
* Radio program broadcasting (OGG playback on a frequency), [https://github.com/hbeni/fgcom-mumble/wiki/How-to-create-a-custom-NDB Custom NDB beacons] &lt;br /&gt;
* Status page data collection&lt;br /&gt;
&lt;br /&gt;
A status page showing client details is available as a PHP website, that gets its data fed from the fgcom-status-bot.&lt;br /&gt;
&lt;br /&gt;
Detailed installation and operation documentation is shipped with the releases, but is also [https://github.com/hbeni/fgcom-mumble/blob/master/server/Readme.server.md online].&lt;br /&gt;
&lt;br /&gt;
==How does it work? (technical information)==&lt;br /&gt;
The technical details are specified and described in the various readme files of the projects source code (as a starter read the [https://github.com/hbeni/fgcom-mumble/blob/master/Readme.architecture.md Readme.architecture.md]).&lt;br /&gt;
&lt;br /&gt;
Basicly, all users join the same mumble channel and run the fgcom-mumble plugin. The plugin knows everything necessary from the participating users (like radios used, frequencies tuned, locations, etc) and based on that information mutes or plays incoming voice messages from the other users. Based on signal quality, static noise is mixed in for more fun and a more realistic experience.&lt;br /&gt;
Because the voice of other users is muted, it is a design wise out-of-the-box feature that brings frequency and location separation but allows everyone to stay in the same mumble channel.&lt;br /&gt;
&lt;br /&gt;
==Related content==&lt;br /&gt;
*[https://github.com/hbeni/fgcom-mumble/wiki FGCom-mumble GitHub wiki] with hints etc&lt;br /&gt;
*[https://github.com/hbeni/fgcom-mumble/blob/master/README.md FGCom-mumble README.md] Main readme of the project bringing all the details you always wanted to know&lt;br /&gt;
&lt;br /&gt;
===Forum topic===&lt;br /&gt;
*The {{forum link|t=37644|title=FGCom-mumble}} has development discussions and release announcements&lt;br /&gt;
*{{forum link|p=374950|title=Re: EDDF-Triangle}} and  {{forum link|p=374970|title=Re: EDDF-Triangle}} - Compatibility and differences between FGCom, FGCom-mumble and Mumble&lt;br /&gt;
&lt;br /&gt;
===FlightGear Newsletter===&lt;br /&gt;
*[[FlightGear_Newsletter_June_2020]]: First prototype announced&lt;br /&gt;
*[[FlightGear_Newsletter_July_2020]]: Load tests successful, RDF implemented, Live-Status page added&lt;br /&gt;
*[[FlightGear_Newsletter_August_2020]]: More testing, new HF/VHF/UHF models, auto-updater&lt;br /&gt;
*[[FlightGear_Newsletter_September_2020]]: Mumble API changes, distributed deployment, configuration trough INI, statistics&lt;br /&gt;
*[[FlightGear_Newsletter_October_2020]]: More API changes, proper 8.33kHz/25kHz overlap, RadiGUI added&lt;br /&gt;
*[[FlightGear_Newsletter_November_2020]]: Test server announced&lt;br /&gt;
*[[FlightGear_Newsletter_December_2020]]: Release 0.8.0 bringing networking capability&lt;br /&gt;
*[[FlightGear_Newsletter_April_2021]]: RDF reworked, 0.12.0 announced, MacOS support&lt;br /&gt;
*[[FlightGear_Newsletter_May_2021]]: Better airliner support, announced 0.13.0 and 0.14.0, restructured release package structure&lt;br /&gt;
*[[FlightGear_Newsletter_June_2021]]: 0.14.1 announced, updater bugfixes&lt;br /&gt;
*[[FlightGear_Newsletter_July_2021]]: 0.14.2 announced, updater bugfixes part II&lt;br /&gt;
*[[FlightGear_Newsletter_January_2022]]: '''1.0.0 released, Mumble 1.4 hit the light'''&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Fgcom-mumble_statuspage-0.6.0.png|Statuspage 0.6.0&lt;br /&gt;
FGCom-mumble_radioGUI-0.6.0.png|RadiGUI 0.6.0&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FGCom]]&lt;br /&gt;
[[Category:Air Traffic Control]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=K-3D&amp;diff=136816</id>
		<title>K-3D</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=K-3D&amp;diff=136816"/>
		<updated>2022-12-27T11:24:30Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: updated link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
'''K-3D''' is a 3D modeling and animation software program that is free [[GPL]] licensed software. [http://www.k-3d.org/ K-3D website here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Blender]]&lt;br /&gt;
* [[Wings 3D]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* http://www.k-3d.org/&lt;br /&gt;
* http://wiki.k-3d.org/&lt;br /&gt;
&lt;br /&gt;
{{3d}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Modeling]]&lt;br /&gt;
[[Category:GPL software]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=K-3D&amp;diff=136815</id>
		<title>K-3D</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=K-3D&amp;diff=136815"/>
		<updated>2022-12-27T11:23:03Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* External Links */ - corrected links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
'''K-3D''' is a 3D modeling and animation software program that is free [[GPL]] licensed software. [http://www.k-3d.org/wiki/Main_Page K-3D website here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Blender]]&lt;br /&gt;
* [[Wings 3D]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* http://www.k-3d.org/&lt;br /&gt;
* http://wiki.k-3d.org/&lt;br /&gt;
&lt;br /&gt;
{{3d}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Modeling]]&lt;br /&gt;
[[Category:GPL software]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hardware_recommendations&amp;diff=136765</id>
		<title>Hardware recommendations</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hardware_recommendations&amp;diff=136765"/>
		<updated>2022-12-23T08:45:54Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Related content */  - added a reference to OpenGL performance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Disclaimer|id=final-fixed-function-release}}&lt;br /&gt;
&lt;br /&gt;
These '''hardware recommendations for [[FlightGear]]''' are based on community feedback, be sure to consult other sources before making serious decisions regarding computer hardware.&lt;br /&gt;
&lt;br /&gt;
The performance of FlightGear depends on three main components in your computer: the CPU (processor), which makes all the computations; the graphics card, which renders the visual aspect of FlightGear, and RAM (also known as memory) which generally allows FlightGear to have more information running (for the lack of a more technical phrase).&lt;br /&gt;
&lt;br /&gt;
You may also want to check out the following article on building your own FlightGear box based on decommissioned and refurbished server at [[Howto: Build a cheap FlightGear box]], and also learn about how the FlightGear project handles old hardware support at [[FlightGear and old Hardware]] - see [[Minimal Startup Profile]] to start with a bare minumum and turn up settings one by one.&lt;br /&gt;
&lt;br /&gt;
Also see: [[FlightGear Benchmark]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recommendations for FlightGear in 2022 (2020.3 LTS) ==&lt;br /&gt;
{{Stub|section=yes}}&lt;br /&gt;
FlightGear can scale the quality to run on a huge range of hardware at different quality settings. &lt;br /&gt;
&lt;br /&gt;
''Note for old hardware'': Towards the less powerful end of the range, for FlightGear to run smoothly, it requires a video card with OpenGL drivers 2.0 or higher. You need to spend some time learning settings, and tweaking for bottlenecks, to run FlightGear on very old systems. See [[Minimal Startup Profile]] to start with a bare minimum and then turn settings up.&lt;br /&gt;
&lt;br /&gt;
Quick notes:&lt;br /&gt;
&lt;br /&gt;
* The LTS you should be running is the current 2020.3.12+ LTS. (February 2022).&lt;br /&gt;
&lt;br /&gt;
* People buying new hardware with FlightGear in mind are encouraged to wait until LTS ''after'' the current 2020.3 LTS, ''if possible'' - that is, if they imagine they will be using the hardware for a long while so it makes a difference.&lt;br /&gt;
*# Future performance requirements will not be known until the LTS after the current LTS. Some of the big projects underway on the FlightGear next branch need to be finished before requirements can be determined. These projects include moving to: the new [[Compositor]] rendering framework,  the [[World Scenery 3.0 roadmap|next generation scenery]] rendering and data format, a higher version of OpenGL, in-sim UI replacement, and so on.&lt;br /&gt;
*# Hardware prices will be expected to drop once the situation with the pandemic eases. Hardware is getting steadily faster. Hardware with the same performance is getting cheaper. You should never buy hardware for a ''future'' version of FlightGear or any other program. It's always better to wait until the application releases (and until the hardware purchase is justifiable as you have time to start using it properly).&lt;br /&gt;
*# There is a 1st rollout of buildings, roads, and objects for the world based on OSM data. Please don't buy hardware based on this rollout. The performance in future rollouts will improve drastically as objects are changed to a newer format.  See [[OSM2City 1st Worldbuild]] for details.&lt;br /&gt;
* For current hardware requirements (with scenery layers containing the new OSM2City world-build disabled): FlightGear 2020.3 LTS is faster than the 2018.3 LTS. The 2018.3 LTS hardware profile below is valid - but only one profile and hardware build is available in the 2018.3 LTS section as of writing this.&lt;br /&gt;
* The DDS texture cache should be turned on: &lt;br /&gt;
:&amp;lt;code&amp;gt;[[Qt-launcher|Qt Launcher]] &amp;gt; Settings tab &amp;gt; Rendering &amp;gt; Show more &amp;gt; enable Cache graphics for faster loading&amp;lt;/code&amp;gt; '''or''',&lt;br /&gt;
:&amp;lt;code&amp;gt;in-sim menu &amp;gt; View &amp;gt; Rendering &amp;gt; enable Use disk space for faster loading (DDS texture cache)&amp;lt;/code&amp;gt;.&lt;br /&gt;
:The DDS texture cache makes loading faster, and can make the sim feel smoother. it also helps older systems - as it reduces VRAM usage on the Graphics card (GPU), as well as reducing RAM usage. The DDS texture cache will grow in size mainly as you try new aircraft. It will grow in size a bit as you visit new locations, if you have scenery objects like landmarks enabled.&lt;br /&gt;
* There is a new graphics profile system being developed for future FlightGear. This will at least have some named settings presets which can be associated with some hardware and performance categories.&lt;br /&gt;
&lt;br /&gt;
== Recommended hardware for FlightGear 2018.3 LTS ==&lt;br /&gt;
Only one target performance and settings profile has been written below. Other settings profiles are to-do. FlightGear can scale the quality to run on a huge range of hardware at different quality settings.&lt;br /&gt;
&lt;br /&gt;
''Note for old hardware:'' Towards the less powerful end of the range, for FlightGear to run smoothly, it requires a video card with OpenGL drivers 2.0 or higher. You need to spend some time learning settings, and tweaking for bottlenecks, to run FlightGear on very old systems. See [[Minimal Startup Profile]] to start with a bare minimum and then turn settings up.&lt;br /&gt;
&lt;br /&gt;
Before selecting a GPU and CPU have a look at the benchmark lists in the [[Hardware recommendations#Mostly high and Max settings with 2015.2B mid range GPU|profile]] below for an approximate idea of performance. If you are choosing a laptop see the manufacturers website for that model to find out your GPU and CPU, and check the list. Remember the slowest component will be the limiting component. For example: if you want high graphics but your GPU is slow, having a very fast CPU will not help. Higher resolutions need faster GPUs: for example, you can't run FlightGear at 4k resolution with a laptop if your manufacturer has not included a very fast GPU, even if they have included a reasonably fast dedicated GPU - in these laptops you need to run FlightGear at lower resolution, or find a laptop with faster GPU. If you run out of RAM then you cannot have really high visibility ranges or object densities even if your GPU and CPU is fast. The tips in the sections below about avoiding Intel integrated GPUs, mobile laptop GPUs, and low range NVIDIA GPUs (xx10, xx20, xx30, xx40) apply.&lt;br /&gt;
&lt;br /&gt;
''Note on hardware requirements''&lt;br /&gt;
&lt;br /&gt;
Requirements are only valid for a target FPS, monitor resolution, usage, and graphics / simulation quality settings. People have a huge range of hardware. &lt;br /&gt;
&lt;br /&gt;
For flight simulators the usage can vary depending on the craft used, how the craft is used, and over what scenery the craft is used. The visibility range can change with altitude, and how fast the scenery is loaded can change with speeds. How complex the visuals are depends on how much vegetation, or man-made buildings/objects, are in the visible scenery. The following all place different demands: slow and low with a balloon/[[pterosaur]]/glider/wingsuit/ground effect vehicle, slightly faster and higher in a single prop [[Cessna 172P|C172P]]/[[Cessna 182S|C182]]/[[Piper J3 Cub|Cub]]/[[Piper PA28 Warrior II|PA]], fast and low in a supersonic [[Saab 37 Viggen|Viggen]]/[[Grumman F-14 Tomcat|F-14]] jet, higher altitude but slower in a [[Airbus A320 Family|A320]] airliner, fast and high in a Concorde, extremely fast and high in suborbital craft like the [[X-15]] , or using a [[Space Shuttle|Shuttle]] or [[Vostok-1]] space craft that is fast enough to reach orbit. View distances can vary from [[:File:EC135 Heer.jpeg|individual grass blades]] in airport keep to seeing [[:Category:Screenshots of Earthview|entire continents]] from orbit using a separate orbital renderer. Flying over a dense forest can mean [[:File:Alouette-lll over the Carpathian Mountains in Romania in Autumn (Flightgear 2018.x).jpg|vast]] amounts of trees are in view, while flying over a barren desert or ocean can mean there are few objects. You can always fly with a lower scenery loading distance and/or a lower visibility distance. A cloudless day can mean there are fewer clouds to draw and also may be lighter on CPU to simulate as Advanced Weather tracks lifecyles of individual clouds. On very old systems turning down cloud density and visibility range can help - as can turning off parts of the Advanced Weather simulation, or using basic weather. If you are flying at night using instruments for navigation, you can turn down graphics settings a lot :) . Different craft place different demands on CPU and GPU. Some craft have detailed electrical, electronic, and mechanical systems which are demanding on the CPU to simulate, while a craft like a glider does not. Some craft have high fidelity graphics and complex electronic displays - these can be demanding on the CPU and loading times, not just the GPU!. Some craft have options to reduce graphics. Some craft have options to reduce CPU usage by making parts of the simulation less responsive or less fine-grained - but these craft tend to be craft which are demanding on the CPU to start with. &lt;br /&gt;
&lt;br /&gt;
Tip: If you have a slow GPU or CPU, you may be able to find craft that are less demanding for your bottleneck. Different aspects of craft can be demanding on the GPU or CPU - systems &amp;amp; instruments, aircraft interior art, aircraft exterior art, or flight dynamics model (FDM). For example, some craft may have detailed systems and instruments but have simple interior art. Some research projects just produce a flight dynamics model with no art and simple systems. Don't worry about the CPU time taken by the flight dynamics model - it isn't really heavy on CPU to simulate - think of an offline flight dynamics engine like JSBSim as a photo viewer for digital fine-art - it may take hours, days or weeks to render a fine-art quality ray-traced [https://commons.wikimedia.org/wiki/File:Raytraced_image_of_several_glass_objects.png digital image] but your web browser can display it very quickly - similarly JSBSim can take the results of computational fluid dynamics done on a supercomputing cluster (like a ray-traced digital image), or taken from windtunnel data (like taking a photo), and simulate flight dynamics quite quickly. Tip: You can use the filter in &amp;lt;code&amp;gt;[[FlightGear Qt launcher|FlightGear Qt Launcher]] &amp;gt; Air craft tab &amp;gt; Browse &amp;gt; Filter using ratings &amp;gt; click Adjust minimum ratings&amp;lt;/code&amp;gt; ([[FlightGear Qt launcher#Community video walkthroughs|video tutorial]]) to lower minimum ratings and look for craft which have e.g. good systems and flight dynamics model but simpler art - but this only gives a ''small'' clue - some craft like a glider may not have much systems to simulate or have a simple model so they are not demanding even when recreated in detail.&lt;br /&gt;
&lt;br /&gt;
Without target FPS, monitor resolution, usage, and settings, requirements are meaningless other than for maximum settings (i.e. meaningless for what hardware people actually have) - even maximum settings are hard to predict as they depend on what scenery a flight can take place. It's not trivial to find exact specifications, even for commercial applications with lots of test systems. Some commercial 3d applications do give out specifications for less than max settings but these mostly do not give target performance/quality/usage at all, and a lot of 3d applications like games have limited usage patterns making it easier to check - since commercial screenshot galleries tend to be on the most powerful systems at time of release without stating hardware, not giving detailed performance/quality/usage targets is also a way of making people forget quality may not look anything like advertised on their hardware. The topic of quality and performance is not as simple as commercial applications make it out to be in their advertising. People should consider that a bit of time spent tweaking settings for the performance bottlenecks in your hardware, for your typical usages, can make a huge difference to visuals and FPS.&lt;br /&gt;
&lt;br /&gt;
=== Mostly high and Max settings with 2015+ mid range GPU ===&lt;br /&gt;
&lt;br /&gt;
==== Target performance: ====&lt;br /&gt;
&lt;br /&gt;
* '''20-30 FPS''' with default [[Cessna 172P|C172P]]. Monitor resolution 1920 by 1080 (also known as 1080p , Full HD, or FHD). &lt;br /&gt;
** Note: actual smoothness depends on frame-spacing spikes - average FPS helps lower overall frame spacing.&lt;br /&gt;
&lt;br /&gt;
==== Target settings: rendering and scenery: ====&lt;br /&gt;
&lt;br /&gt;
* Renderer: [[Atmospheric light scattering|ALS]] (advanced renderer)&lt;br /&gt;
* &amp;lt;code&amp;gt;View &amp;gt; rendering&amp;lt;/code&amp;gt; dialog:&lt;br /&gt;
** Maximum shaders: all shader sliders maxed (i.e. overlays: on).&lt;br /&gt;
** Scenery layers: Vegetation density: Very High (if you run into RAM issues try turning this down).&lt;br /&gt;
** Scenery layers: Vegetation shadows: on.&lt;br /&gt;
** Scenery layers: Buildings: Random buildings - or OSM2City with light scenery near small towns, but not OSM2City near areas dense with big buildings (heavier scenery needs a faster CPU). Tweaking random building density: Try setting&amp;lt;code&amp;gt;/sim/rendering/building-density&amp;lt;/code&amp;gt; in the range of 1-10. You can set this in the [[property browser]], or as a [[Command line options|command-line option]] set in various ways including the [[FlightGear Qt launcher|Qt launcher]],&lt;br /&gt;
** Scenery layers: everything else on: Scenery objects (includes airport terminals), roads and railways, pylons, random scenery objects&lt;br /&gt;
** Cloud density and visibility range sliders: max.&lt;br /&gt;
* &amp;lt;code&amp;gt;View menu &amp;gt; Adjust LOD ranges&amp;lt;/code&amp;gt; dialog&lt;br /&gt;
**[[Level Of Detail (LOD) Ranges#Scenery ranges|Level of detail ranges]]: default (single prop planes): 1.5km/9km/30km.&lt;br /&gt;
* [[Anti-aliasing]]: 4x or 8x Multi-sampling(MSAA). [[Anti-aliasing#Transparency anti-aliasing|Transparency anti-aliasing]] (called Adaptive anti-aliasing on AMD GPUs): Multisample. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Environment &amp;gt; weather &amp;gt; detailed weather&amp;lt;/code&amp;gt; dialog:&lt;br /&gt;
**[[Weather#Advanced Weather|Advanced Weather]]: on.&lt;br /&gt;
** [[Weather#Advanced configuration|Advanced settings]] dialog: Enabled features: All: &amp;lt;code&amp;gt;Cloud shadows&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Realistic visibility&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;Generate thermals&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Terrain effects&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Terrain pre-sampling&amp;lt;/code&amp;gt;, etc. &amp;lt;code&amp;gt;Max visibility&amp;lt;/code&amp;gt; : 250km&lt;br /&gt;
&lt;br /&gt;
=== Hardware build: ===&lt;br /&gt;
&lt;br /&gt;
* '''GPU''' (Graphics Processing Unit, or Graphics Card): A GTX 960 or 1050 Ti - or equivalent performance. More than 3000 ratings in this list: as of [http://web.archive.org/web/20210412095421/https://benchmarks.ul.com/compare/best-gpus April 2021]. [https://benchmarks.ul.com/compare/best-gpus Direct link] (Note: ratings numbers and list may have changed by the time you see it). Note: a GPU with this performance is capable of much more than 30 FPS.&lt;br /&gt;
* '''CPU''': 4 core Intel Sandybridge [https://en.wikipedia.org/wiki/Sandy_Bridge#Desktop_platform i5 2500] (released 2012) or faster. This build will be '''limited by the CPU''' . Try to get a newer generation [https://en.wikipedia.org/wiki/Intel_Core Intel CPU], or equivalent AMD Ryzen CPU, if possible - e.g. a 4th generation Intel [https://en.wikipedia.org/wiki/Haswell_(microarchitecture)#Desktop_processors Haswell] (4xxx) i5 CPU, or faster. For a fairly approximate idea of CPU performance needed (Sandybridge i5 2500 has a rating of ~1700) see this archived copy of a single-core benchmark list: [http://web.archive.org/web/20210412100323/https://www.cpubenchmark.net/singleThread.html April 2021] . [https://www.cpubenchmark.net/singleThread.html Direct link] (Note: this direct list may have changed ratings numbers by the time you see it). This list only gives single-core performance - and it is approximate - for example, when an application uses more than one core processor the frequency will drop slightly lowering performance. The only reason a 2012 Sandybridge 2500 can manage 20-30FPS is because core performance hasn't gone up that much - it has increased by about 2x. FlightGear uses multiple cores. Some people may be able to get FG to run fine with a fast high clock 2 core CPU from a newer generation of CPU. But a 4 core is recommended as future FlightGear will use cores even more.&lt;br /&gt;
&lt;br /&gt;
*'''Memory''' (RAM): 8GB (12-16 GB preferred). If you lack RAM you need to reduce the level of detail ranges so less scenery is displayed.&lt;br /&gt;
*'''Disk:''' to do! .&lt;br /&gt;
&lt;br /&gt;
=== FlightGear settings tips: ===&lt;br /&gt;
&lt;br /&gt;
* This build is '''limited by CPU'''. If your CPU is not faster (newer generation), at least you can try turning up graphics more to give the GPU something to do (try increasing Anti-aliasing, turning up transparency anti-aliasing by selecting super-sampling variety, increasing tree density).&lt;br /&gt;
* GPU limited: Try turning down the resolution and [[anti-aliasing]] if you are GPU limited. The higher the resolution the more work the GPU must do. A 4k (UHD) resolution is like the pixel shader load of rendering on four 1080p screens at once! See [[Anti-aliasing#The%20trade%20off%20between%20graphics%20content.2C%20FPS.2C%20and%20graphics%20settings%20like%20anti-aliasing|The trade off between graphics content, FPS, and graphics settings like anti-aliasing]] &lt;br /&gt;
* GPU: For '''4k monitors''': Try reducing resolution to 1080p. A lot of laptops come with slow GPUs but have 4k screens. You should try the equivalent of a GTX 1080/2070 or a rating of about 7800 in this archived list, but you may have to tweak settings a bit: [http://web.archive.org/web/20210412095421/https://benchmarks.ul.com/compare/best-gpus April 2021]. [https://benchmarks.ul.com/compare/best-gpus Direct link] (Note: ratings numbers and list may have changed by the time you see it). See the advice on the [[Anti-aliasing#Tips on using anti-aliasing settings|anti-aliasing]] page.&lt;br /&gt;
** Notes: It's overlays and tree density that can put stress on the GPU.&lt;br /&gt;
* GPU: overlays require strong GPU power (that level of detail is not trivial). &lt;br /&gt;
* CPU: Aircraft that are heavier on CPU than than the C172P can drag down performance more if you are CPU limited.&lt;br /&gt;
* RAM &amp;amp; GPU: Trees at ultra consume a lot of RAM. They need GPU power too.&lt;br /&gt;
* RAM: If you run into RAM issues try turning down : [[Level Of Detail (LOD) Ranges#Scenery ranges|LoD:Rough]] (in &amp;lt;code&amp;gt;View menu &amp;gt; Adjust LOD range&amp;lt;/code&amp;gt;), tree density, and LoD: bare.&lt;br /&gt;
* CPU &amp;amp; RAM: Using OSM2City scenery can also use up RAM and CPU. OSM2City version 2017.2 is compatible with FlightGear 2018.3 LTS. Try turning off roads and pylons if you are CPU limited. Try turning down LoD:rough if you are RAM/CPU limited. Random scenery objects can be heavy on CPU, try turning them off.&lt;br /&gt;
* GPU: ALS shaders sliders can be maxed in a lot dedicated GPUs, even quite old ones provided they are dedicated GPUs (and not integrated/mobile GPUs). It's mostly the scenery layer settings including tree density and LoD ranges that can be intensive.&lt;br /&gt;
* GPU / Disk space: turn on the &amp;lt;code&amp;gt;View &amp;gt; rendering &amp;gt; texture cache&amp;lt;/code&amp;gt; for smoother FPS frame spacing and faster loading. This will take up extra space.&lt;br /&gt;
* ...what does this look like? Only the screenshots that have been uploaded to the wiki by volunteers are available right now. There is a wiki category with '''roughly''' [[:Category:Screenshots at high settings|high settings screenshots]]. Note: a lot of these screenshots use settings that are below this profile, the overlays screenshots typically have transparency anti-aliasing higher than multisampling, some screenshots are with a much older FlightGear, a substantial amount of screenshots laptops with weaker GPUs or computers with less than 16 GB of RAM, some screenshots are at slightly higher settings than this profile or at 4k resolution.To get to the highest settings in the category at 1080p and trees at ultra, you would need a GTX 1060 or higher (about [http://web.archive.org/web/20210314111800/https://benchmarks.ul.com/compare/best-gpus 4100] in ratings), 12-16 GB of RAM - lowering LoD ranges will help (low ranges are fine for low altitude flights especially in mountain areas). Not turning up transparency AA will help. The CPU would be maybe a bit faster than i5 2500 to populate trees quickly at ultra e.g. a fast Haswell i5, or an overclocked Sandybridge i5 2500k @ close to 5GhZ.&lt;br /&gt;
&lt;br /&gt;
== Recommended hardware for FlightGear 3.20+ ==&lt;br /&gt;
{{See also|SIMD Support}}&lt;br /&gt;
Generally, if you want to see frame rates in the 20's and above and medium/high graphical settings, which is typically preferred, you should have a budget of at least $1000. The following list is recommended hardware. It is not required to any degree; however, if you're purchasing a new computer dedicated to FlightGear, it is highly recommended that you get a computer with at least these requirements.&lt;br /&gt;
; Display&lt;br /&gt;
* A screen with a resolution of at least 1024x768 @32bpp (most GUI dialogs cannot be used otherwise currently)&lt;br /&gt;
; Graphics processing unit&lt;br /&gt;
* A 3D video card (with AMD or NVIDIA chipset) with support for [[OpenGL]] 2.1 or better and at least 1024-2048MB of dedicated DDR3+ (DDR5 preferred) VRAM (i.e. 512 Mb VRAM minimum). FlightGear requires an '''OpenGL 2.1-compliant''' hardware-accelerated 3D video card to run at reasonable frame-rates. Most modern PCs have hardware-accelerated 3D cards. If your FlightGear video is not running smoothly, see [[Graphics drivers configuration]].&lt;br /&gt;
* See [[Supported Video Cards]] for a list of video cards known to work with FlightGear. &lt;br /&gt;
* Cards with working GLSL/shader support will enable FlightGear to run with more visual effects. &lt;br /&gt;
* If you are serious about running FlightGear, you should [[Problematic Video Cards#Intel GMA|avoid Intel HD/GMA cards]] at all costs - these are integrated chipsets that provide only basic OpenGL/GLSL support. See [[problematic video cards]] for a list of video cards that may not properly run.&lt;br /&gt;
; Processor&lt;br /&gt;
* At least 2-4 Gb '''free''' RAM (and more is better: when building/buying a new system, consider 6-8gb total the absolute minimum these days). FlightGear uses more than 500 Mb of RAM by default. If less free RAM is available, FlightGear would be slowed down significantly due to OS swapping. &lt;br /&gt;
* At least a quad core processor with ~ 2 GHz each, 64 bit architecture (and operating system) recommended (multi-core processors have benefits for some FlightGear components such as the threaded tile loader). When buying a new computer, buying at least a quad core computer (i.e. i7) is a good idea these days.&lt;br /&gt;
; Storage disk&lt;br /&gt;
* 5 Gb HD space for a minimum installation, approx. 10 Gb if you want to compile it yourself, plus up to 80 Gb for optional world-wide scenery. More space is required for people wanting to check out the latest base package from [[Git]]. People using [[Scripted Compilation on Linux Debian/Ubuntu]], will approximately need 30 Gb of disk space in total.&lt;br /&gt;
; Input devices&lt;br /&gt;
* A three button mouse or two button mouse with scroll wheel&lt;br /&gt;
* An optional [[joystick]]/yoke and/or pedals - Gameport or USB (HID compatible), see &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Input&amp;lt;/tt&amp;gt; for a list of input hardware known to work with FlightGear.&lt;br /&gt;
; Sound card&lt;br /&gt;
* An optional sound card, Soundblaster compatible, preferably with EAX support.&lt;br /&gt;
&lt;br /&gt;
== NVIDIA ==&lt;br /&gt;
''April 2021 note:'' Check a GPU benchmark list like this for a '''rough''' idea of performance: [https://benchmarks.ul.com/compare/best-gpus Direct link] ([http://web.archive.org/web/20210412095421/https://benchmarks.ul.com/compare/best-gpus April 2021 archive]). If you are selecting a laptop find out what your GPU is - ask or check the manufacturers website page for the model of the laptop. Laptop GPUs: Laptops with NVIDIA 9xx and earlier series GPUs often have the mobile &amp;quot;M&amp;quot; variant. These are a lot slower than the normal version e.g. a GTX 960M is slower than a GTX 960. NVIDIA 10xx series and later use desktop equivalents in all laptops, or close to it. This is due to recent GPU technology using less power making it easier on laptop batteries. There are also Q-MAX variants that are only slightly slower than normal versions but use less battery - e.g. a GTX 1060 Q-MAX is only slightly slower than a GTX 1060 - see benchmarks. (April 2021)    &lt;br /&gt;
&lt;br /&gt;
Recent NVIDIA price/performance trends (March 2021):    &lt;br /&gt;
&lt;br /&gt;
* Each GPU slot tends to get the performance of the GPU slot above it from the last generation. e.g. A GTX 1650 (xx50 slot) will get the a the performance of a GTX 1060 (xx60 slot).    &lt;br /&gt;
* The price and performance sweet spot are the midrange cards xx50, XX50 Ti and xx60. xx50 Ti might be around the best slot.     &lt;br /&gt;
* The fastest cards are released first each GPU generation (e.g. xx80 Ti or xx90), and are priced high to sell to enthusiasts - for GPU chips yields are also low to start so there's a limited number of hardware.GPUs are released in decreasing order of performance to tempt people to buy a performance range that they don't need. AMD follows the same pattern.    &lt;br /&gt;
* Hardware prices are expected to drop as the situation with the global pandemic eases.    &lt;br /&gt;
&lt;br /&gt;
Stay away from nVidia GPUs with a low second digit (x20, xx20, x40, xx40). Higher 2nd digit means more CUDA cores. &lt;br /&gt;
&lt;br /&gt;
The number of CUDA cores matters much more than a few Mhz in frequency, since you can process more, in parallel. &lt;br /&gt;
Also watch out for bus width, as that has a big impact on data throughput. The more CUDA cores it has, the better. A GTX680 is lots and lots and lots more important than a CPU with a zillion cores.&lt;br /&gt;
&lt;br /&gt;
In case of doubt, go for an older generation x60 (460, or 560), even a 260 would be much more of an improvement than the 620. Basically, Nvidia cards compile GLSL shaders and OpenCL kernels into CUDA kernels (sort of), so more CUDA kernels = more shader power. &lt;br /&gt;
&lt;br /&gt;
Whatever GPU (and other hardware) you get, first of all make sure that it is fully supported by your OS of choice.&lt;br /&gt;
Thorsten mentioned in another thread that he purchased a computer with an NVIDIA GTX670 that ended up not being fully supported under Linux, so I'd suggest to be really careful here.&lt;br /&gt;
&lt;br /&gt;
== Notebooks ==&lt;br /&gt;
If you are interested in running FlightGear on a notebook, you may also want to check out [[Notebooks known to run FlightGear]]. A regular notebook is not recommended if you plan to fly often on FlightGear.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
Your overall experience on FlightGear generally depends on these components:&lt;br /&gt;
*Your '''CPU''', which makes all the calculations. This component isn't as important as your graphics card. However, you should keep in mind that your CPU is the brain of your computer. As stated above, it's recommended that you purchase a CPU that has at least 4 cores.&lt;br /&gt;
*Your '''graphics card''', which renders the visuals of FlightGear. This component is extremely important. If you have an amazing CPU but a lackluster graphics card, your framerate will be low. Also, it's recommended that you purchase a relatively new graphics card, as old ones (even if very powerful) have been known to cause rendering glitches.&lt;br /&gt;
*Your '''RAM''' (memory), which allows temporary storage of information. Memory is probably least important of the three when it comes to framerate; however, any less than 4 GB memory has been known to cause crashes in FlightGear.&lt;br /&gt;
&lt;br /&gt;
=== Should I purchase a computer or build my own? ===&lt;br /&gt;
It is generally recommended that you build your own computer. Your money will get you much farther. However, it is also recommended that if you build your own computer, you know someone who knows their way around computers. Buying parts that you ''think'' may be powerful but truthfully are not, or worse case, not compatible, can lead to disappointment.&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [[Supported Video Cards]]&lt;br /&gt;
* [[Graphics drivers configuration]]&lt;br /&gt;
* [[OpenGL_performance]]&lt;br /&gt;
* [[Troubleshooting Problems]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Articles to be updated for each release]]&lt;br /&gt;
[[Category:Hardware|Recommendations]]&lt;br /&gt;
&lt;br /&gt;
[[de:Hardwareempfehlungen]]&lt;br /&gt;
[[es:Recomendaciones de hardware]]&lt;br /&gt;
[[fr:Hardware Recommendations]]&lt;br /&gt;
[[pl:Wymagania sprzętowe]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_a_fuel_system_in_JSBSim&amp;diff=136318</id>
		<title>Howto:Write a fuel system in JSBSim</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_a_fuel_system_in_JSBSim&amp;diff=136318"/>
		<updated>2022-11-28T15:30:08Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: Added a note clarifying the meaning of a pps unit.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of [[FlightGear]] 2.4.0, JSBSim aircraft have a new tank-property: &amp;lt;tt&amp;gt;propulsion/tank[n]/external-flow-rate-pps&amp;lt;/tt&amp;gt;. Setting this property will either draw fuel from (value &amp;lt; 0), or insert fuel into (value &amp;gt; 0) the respective tank. By using this property, one can simulate complex fuel systems. Note: [pps] stands for pounds per second.&lt;br /&gt;
&lt;br /&gt;
== A fuel system file ==&lt;br /&gt;
First we create a system file, in which we will write the actual system. It's advised to save this file as &amp;lt;tt&amp;gt;Aircraft/.../Systems/fuel.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;system name=&amp;quot;fuel&amp;quot;&amp;gt; &lt;br /&gt;
	&amp;lt;!-- we will write the system here --&amp;gt;&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We link the main FDM to this system by adding the following line, somewhere in your aircraft's FDM (I advise to put it below &amp;lt;tt&amp;gt;&amp;lt;/propulsion&amp;gt;&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;system file=&amp;quot;fuel&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Notice how &amp;quot;fuel&amp;quot; refers to &amp;lt;tt&amp;gt;Aircraft/.../Systems/fuel.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Fuel handling in JSBSim ==&lt;br /&gt;
To make JSBSim handle the fuel system during simulation we create one or more channels in the system file. Within these we can use the different control components [http://jsbsim.sourceforge.net/JSBSimReferenceManual.pdf available in JSBSim].&lt;br /&gt;
&lt;br /&gt;
When using &amp;lt;tt&amp;gt;propulsion/tank[n]/external-flow-rate-pps&amp;lt;/tt&amp;gt; there is no automatic detection if the tank is full or empty. Fuel filling an already full tank will just disappear, creating a &amp;quot;leak&amp;quot;. Fuel drawn from an empty tank will make new fuel magically appear in the system. In most cases we will have to make checks to avoid these problems.&lt;br /&gt;
&lt;br /&gt;
Two control components that is useful in a fuel system are summers and switches.&lt;br /&gt;
 &lt;br /&gt;
=== Summers ===&lt;br /&gt;
To calculate the total fuel-flows to/from each tank, we need to sum up the independent flows. This must be done for each single tank, but the principle is the same every time and simple to understand. Every flow that transports fuel ''from'' a tank should get a minus sign.&lt;br /&gt;
&lt;br /&gt;
This summer calculates the total flow to or from tank[0].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summer&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/jettison&amp;lt;/input&amp;gt;		&amp;lt;!-- jettison --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[1]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 1 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[2]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 2 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[3]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 3 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[1]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 1 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[2]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 2 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[3]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 3 --&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
&amp;lt;/summer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Switches ===&lt;br /&gt;
To turn the flow on or off we need a switch.&lt;br /&gt;
&lt;br /&gt;
This switch draws 5 lbs/s from tank[0] until its empty as long as the collector vale is open.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[0]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[0]/pct-full LE 0&lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Jettison switch  ===&lt;br /&gt;
The /controls/fuel/fuel-to-remain property controls the amount of fuel (in lbs) that should be kept a board. When the total-fuel-level reaches that level, fuel dumping will auomatically stop. Fuel dumping can also be stopped by closing the jettison valves (disable &amp;lt;tt&amp;gt;/controls/fuel/dump-valve&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;switch&amp;gt;&lt;br /&gt;
	&amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;12.25&amp;quot;&amp;gt;&lt;br /&gt;
		/controls/fuel/dump-valve == 1&lt;br /&gt;
		propulsion/total-fuel-lbs gt /controls/fuel/fuel-to-remain&lt;br /&gt;
	&amp;lt;/test&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[3]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[7]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
&amp;lt;/switch&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The output properties should be added as inputs to the respective summers. Add a minus sign, as the fuel is taken ''from'' the tank.&lt;br /&gt;
&lt;br /&gt;
=== Two tanks and a collector tank ===&lt;br /&gt;
A system with two tanks (tank[0] and tank[1]) feeding a collector tank (tank[2]). The engine is fed from the collector tank. There is valves between each of the tanks and the collector that can be set open or closed. Negative Gs cut the  supply to the collector.&lt;br /&gt;
&lt;br /&gt;
The system consists of two properties: propulsion/tank[0]/collector-valve and propulsion/tank[1]/collector-valve that represent the valves and a channel that handles the fuel transfer from the tanks to the collector and the necessary checks.&lt;br /&gt;
&lt;br /&gt;
The fuel transfer using external-flow-rate-pps does not check against if tanks are empty or full. This can create fuel when &amp;quot;fuel&amp;quot; is drawn from an empty tank or a &amp;quot;leak&amp;quot; when fuel is pumped into a full tank. The collector tank in the example has the capacity 130 lbs so making the check against collector tank level greater or equal to 129 instead of against 130 is done to avoid the later kind of leak since the collector tank normally receives more fuel every time step than the engine uses. The 1 lb margin creates a buffer for this difference as the value oscillates around 129 lbs as the switch turns on and off the flow.&lt;br /&gt;
&lt;br /&gt;
[[File:Collector-tank-system2.png|thumb|Two tanks and a collector tank]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;system name=&amp;quot;Fuel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- tank[2] collector tank connected to the engine fuel pump, tank[0] and tank[1] feeds the collector through valves.&lt;br /&gt;
Negative Gs (&amp;lt;-0.5g) cuts the supply to the collector tanks --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;property value=&amp;quot;1&amp;quot;&amp;gt;propulsion/tank[0]/collector-valve&amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property value=&amp;quot;1&amp;quot;&amp;gt;propulsion/tank[1]/collector-valve&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;channel name=&amp;quot;Fuel pumping&amp;quot;&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[0]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[0]/contents-lbs LE 0&lt;br /&gt;
        propulsion/tank[2]/contents-lbs GE 129 &amp;lt;!-- 1 lb below capacity --&amp;gt;&lt;br /&gt;
        accelerations/Nz LE -0.5&lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[1]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[1]/contents-lbs LE 0&lt;br /&gt;
        propulsion/tank[2]/contents-lbs GE 129 &amp;lt;!-- 1 lb below capacity --&amp;gt;&lt;br /&gt;
        accelerations/Nz LE -0.5 &lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;summer&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;-propulsion/tank[1]/external-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/summer&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/channel&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spitfire: Carburetor engine ===&lt;br /&gt;
&lt;br /&gt;
Spitfire II fuel system. This systems have properties for damage, leaks and simulates the carburetor as a small tank to handle fuel starvation at negative Gs.&lt;br /&gt;
The Spitfire has two interconnected tanks with fuel flowing from an upper tank to a lower and both connected to the engine through cocks. The layout of the system can be seen [http://616sqn.tidesofwar.net/gallery/spitfuelsm.jpg here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
    &amp;lt;system name=&amp;quot;Fuel&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       &amp;lt;property value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/tank_top_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/tank_bottom_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property value=&amp;quot;1&amp;quot;&amp;gt; /fdm/jsbsim/fuel/damage&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/priming&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/leak_top_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/leak_bottom_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;carburetor&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Carburetor Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/float_chamber-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;/fdm/jsbsim/fuel/priming&amp;lt;/input&amp;gt;         &lt;br /&gt;
             &amp;lt;input&amp;gt;-propulsion/engine/fuel-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;      &lt;br /&gt;
          &amp;lt;/summer&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;/channel&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Fuel Pump&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
          &amp;lt;!-- float throttle valve position --&amp;gt;         &lt;br /&gt;
          &amp;lt;aerosurface_scale name=&amp;quot;fuel/float_throttle-valve-cmd&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;propulsion/tank[0]/contents-lbs&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;zero_centered&amp;gt;false&amp;lt;/zero_centered&amp;gt;&lt;br /&gt;
             &amp;lt;domain&amp;gt;&lt;br /&gt;
                &amp;lt;min&amp;gt;0.0&amp;lt;/min&amp;gt;&lt;br /&gt;
                &amp;lt;max&amp;gt;0.5&amp;lt;/max&amp;gt;&lt;br /&gt;
             &amp;lt;/domain&amp;gt;                  &lt;br /&gt;
             &amp;lt;range&amp;gt;&lt;br /&gt;
                &amp;lt;min&amp;gt;1.0&amp;lt;/min&amp;gt;&lt;br /&gt;
                &amp;lt;max&amp;gt;0.0&amp;lt;/max&amp;gt;&lt;br /&gt;
             &amp;lt;/range&amp;gt;&lt;br /&gt;
          &amp;lt;/aerosurface_scale &amp;gt;      &lt;br /&gt;
          &lt;br /&gt;
          &lt;br /&gt;
          &amp;lt;!-- Fuel Flow into Float Chamber in pps --&amp;gt;&lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/flowing_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/float_throttle-valve-cmd&amp;quot;&amp;gt;&lt;br /&gt;
                accelerations/Nz GE -0.5&lt;br /&gt;
                &amp;lt;test logic=&amp;quot;OR&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;test logic=&amp;quot;AND&amp;quot;&amp;gt;&lt;br /&gt;
                      fuel/tank_top_cock EQ 1               &lt;br /&gt;
                      propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
                   &amp;lt;/test&amp;gt;            &lt;br /&gt;
                   &amp;lt;test logic=&amp;quot;AND&amp;quot;&amp;gt;&lt;br /&gt;
                      fuel/tank_bottom_cock EQ 1&lt;br /&gt;
                      propulsion/tank[2]/contents-lbs GT 0&lt;br /&gt;
                   &amp;lt;/test&amp;gt;      &lt;br /&gt;
                &amp;lt;/test&amp;gt;&lt;br /&gt;
             &amp;lt;/test&amp;gt;               &lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/pump_flow_to_float-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                   &amp;lt;product&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/flowing_from_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;table&amp;gt;      &amp;lt;!-- Fuel pump in pps --&amp;gt;&lt;br /&gt;
                         &amp;lt;independentVar&amp;gt;propulsion/engine/engine-rpm&amp;lt;/independentVar&amp;gt;&lt;br /&gt;
                         &amp;lt;tableData&amp;gt; &amp;lt;!-- Fuel pump curve --&amp;gt;               &lt;br /&gt;
                            0      0&lt;br /&gt;
                            100      1&lt;br /&gt;
                            3000   10                  &lt;br /&gt;
                         &amp;lt;/tableData&amp;gt;&lt;br /&gt;
                      &amp;lt;/table&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/damage&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;value&amp;gt;0.12&amp;lt;/value&amp;gt; &amp;lt;!-- full throttle max fuel demand in pps  --&amp;gt;&lt;br /&gt;
                   &amp;lt;/product&amp;gt;            &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/output&amp;gt;   &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;   &lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;      &lt;br /&gt;
          &lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Tanks&amp;quot;&amp;gt;&lt;br /&gt;
             &lt;br /&gt;
          &amp;lt;!-- Fuel flow to be divided aross a number of tanks --&amp;gt;      &lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;quotient&amp;gt;&lt;br /&gt;
                   &amp;lt;property&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/property&amp;gt;&lt;br /&gt;
                   &amp;lt;sum&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/tank_top_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/tank_bottom_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
                   &amp;lt;/sum&amp;gt;&lt;br /&gt;
                &amp;lt;/quotient&amp;gt;               &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/flow_from_tank&amp;lt;/output&amp;gt;         &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;         &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;/channel&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Top Tank&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
          &amp;lt;!-- top_bottom_transfer --&amp;gt;            &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/top_bottom_transfer&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
                propulsion/tank[2]/contents-lbs LT 322&lt;br /&gt;
                accelerations/Nz GE -0.5&lt;br /&gt;
             &amp;lt;/test&amp;gt;         &lt;br /&gt;
          &amp;lt;/switch&amp;gt;   &lt;br /&gt;
             &lt;br /&gt;
          &amp;lt;!-- Fuel tranfer rate in pps--&amp;gt;&lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/top_bottom_transfer-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;product&amp;gt;&lt;br /&gt;
                   &amp;lt;property&amp;gt;fuel/top_bottom_transfer&amp;lt;/property&amp;gt;            &lt;br /&gt;
                   &amp;lt;sum&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/from_bottom_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;table&amp;gt;      &amp;lt;!-- Liquid finds it's own level --&amp;gt;&lt;br /&gt;
                         &amp;lt;independentVar&amp;gt;propulsion/tank[2]/contents-lbs&amp;lt;/independentVar&amp;gt;&lt;br /&gt;
                         &amp;lt;tableData&amp;gt;&lt;br /&gt;
                            319      1&lt;br /&gt;
                            322      0       &lt;br /&gt;
                         &amp;lt;/tableData&amp;gt;&lt;br /&gt;
                      &amp;lt;/table&amp;gt;&lt;br /&gt;
                   &amp;lt;/sum&amp;gt;&lt;br /&gt;
                &amp;lt;/product&amp;gt;               &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/top_bottom_transfer-pps&amp;lt;/output&amp;gt;   &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Top Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/from_top_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;   &lt;br /&gt;
                fuel/tank_top_cock EQ 1&lt;br /&gt;
                accelerations/Nz GE -0.5   &lt;br /&gt;
             &amp;lt;/test&amp;gt;      &lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Top Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/total_from_top_tank-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/top_bottom_transfer-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/from_top_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/leak_top_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;            &lt;br /&gt;
          &amp;lt;/summer&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Bottom Tank&amp;quot;&amp;gt;         &lt;br /&gt;
                &lt;br /&gt;
          &amp;lt;!-- Bottom Tank Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/from_bottom_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
                fuel/tank_bottom_cock EQ 1&lt;br /&gt;
                accelerations/Nz GE -0.5         &lt;br /&gt;
             &amp;lt;/test&amp;gt;&lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Bottom Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/total_from_bottom_tank-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;fuel/top_bottom_transfer-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-/fdm/jsbsim/fuel/priming&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/from_bottom_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/leak_bottom_tank&amp;lt;/input&amp;gt;         &lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;            &lt;br /&gt;
          &amp;lt;/summer&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Douglas DC3 (2 engines, 4 tanks) ===&lt;br /&gt;
The real aircraft has two engines and four tanks.Two tank selectors (one per engine) allows each engine to be fed by each tank, separately and one tank at a time for a given engine. The diagram of the fuel system can be seen [http://2.bp.blogspot.com/-t6PpgjQXPGw/Ul60qTdgJDI/AAAAAAAAAmU/iefht14OnzQ/s1600/DC-3+fuel+system.jpg in this document].&lt;br /&gt;
For FG, the engines are numbered [0] and (1], the 'true' feed tanks [0], [1], [2], [3]. Each tank selector is a 5-positions ('OFF' + 4 tanks) rotary switch. Its positions are numbered -1 (= 'OFF'), 0, 1, 2, 3, respectively for 'no tank selected', tank[0], [1], [2], [3].&lt;br /&gt;
&lt;br /&gt;
'''Prerequisite''': A nasal code logic says:&lt;br /&gt;
* if an engine[N] boost-pump is &amp;quot;ON&amp;quot;, and fuel-level &amp;gt; 4 lbs in the tank selected for this engine[N] ==&amp;gt; fuel-pressure = 16 psi&lt;br /&gt;
* else, if engine[N] is running, and fuel-level &amp;gt; 4 lbs in the tank selected for this engine[N] ==&amp;gt; fuel-pressure = 14.5&lt;br /&gt;
* else of all that, fuel-pressure = 0&lt;br /&gt;
Hence, fuel pressure is a a good criteria to tell that an engine is fed or not, i.e. if it is connected to a tank, if this tank is not empty, with a running pump (or not).&lt;br /&gt;
&lt;br /&gt;
(This function above could probably be implemented by XML)&lt;br /&gt;
&lt;br /&gt;
'''For the fuel system presented here''', two small collector tanks [4] and [5] (each collector tank feeding one engine) have been added. In JSBSim, for this multi-engine aircraft (differently from a single-engine one), these collector tanks are necessary to have each engine be separately fed by its selected 'true' tank and selectively stop if the tank runs out of fuel. The collector tanks are fed by the selected tanks (through rotary switches for left and right engines) and have their level kept constant. This functioning is close to a constant level carburetor.&lt;br /&gt;
&lt;br /&gt;
'''The FDM''' contains the following lines which set the tanks.&lt;br /&gt;
Notice that the engines are written as fed by the collector tanks ([4] and [5]), which themselves will be fed by the selected 'true' tanks ([0] to [3]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;propulsion&amp;gt;&lt;br /&gt;
   &amp;lt;engine file=&amp;quot;DC3_engine&amp;quot;&amp;gt; &amp;lt;!-- number 0 --&amp;gt;&lt;br /&gt;
    .........&lt;br /&gt;
    &amp;lt;feed&amp;gt;4&amp;lt;/feed&amp;gt;&lt;br /&gt;
    .........&lt;br /&gt;
  &amp;lt;/engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;engine file=&amp;quot;DC3_engine&amp;quot;&amp;gt; &amp;lt;!-- number 1 --&amp;gt;&lt;br /&gt;
    .........&lt;br /&gt;
    &amp;lt;feed&amp;gt;5&amp;lt;/feed&amp;gt;&lt;br /&gt;
    .........&lt;br /&gt;
  &amp;lt;/engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
     .........&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 1202 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 600 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      ...........&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 1210 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 600 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
     ...........&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 1210 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 600 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
     ...............&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 1202 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 600 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;!-- Collector Tank (left engine) --&amp;gt;&lt;br /&gt;
     ...........&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 0.5 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 0 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;!-- Collector Tank (right engine) --&amp;gt;&lt;br /&gt;
     ..............&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 0.5 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 0 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/propulsion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''Fuel system XML file''' itself is shown below (can be named fuel.xml, see at the top of this document for how to link the FDM to it).&lt;br /&gt;
&lt;br /&gt;
Collector tanks [4] and [5] have their level kept constant (at 0.25 lb content) by a step-controlled input flow rate (0 or 0.5 pps here). The &amp;quot;ON&amp;quot; value of this step flow rate must be a bit higher than the maximum&amp;quot; fuel-flow-rate-pps&amp;quot; needed by each engine at full power.&lt;br /&gt;
&lt;br /&gt;
Collector tanks [4] and [5] content is a compromise. A large content is secure but it gives an excessive delay between the moment when the 'true' tank runs out of fuel and the engine effectively stops running. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
***********************************************************************************&lt;br /&gt;
Douglas DC-3 C47, initial 3D with YASim FDM by Emmanuel BARANGER,&lt;br /&gt;
further modifications by PAF team:  http://equipe-flightgear.forumactif.com&lt;br /&gt;
 &lt;br /&gt;
May 2013, Daniel DUBREUIL, fuel system for JSBSim FDM&lt;br /&gt;
with Bomber (Simon), jam007, Jon S. Berndt Assistance. Thank you!&lt;br /&gt;
***********************************************************************************&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;system name=&amp;quot;fuel&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ************ LEFT ENGINE *************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;channel name=&amp;quot;Engine 0 Rotary Left Valve Logic&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;!-- Tank 4 level maintenance --&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Collector Tank 4 works like a constant-level carburetor for left engine --&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      &amp;lt;!-- from selected 'utility' tank to Collector Tank 4 Fuel Flow Rate in pps --&amp;gt;&lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 0               &lt;br /&gt;
            propulsion/tank[0]/contents-lbs GT 0&lt;br /&gt;
            /consumables/fuel/tank[4]/level-lbs LT 0.25&lt;br /&gt;
            /engines/engine[0]/fuel-psi-norm GT 5&lt;br /&gt;
         &amp;lt;/test&amp;gt;            &lt;br /&gt;
         &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 1&lt;br /&gt;
            propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
            /consumables/fuel/tank[4]/level-lbs LT 0.25&lt;br /&gt;
            /engines/engine[0]/fuel-psi-norm GT 5&lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
         &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 2               &lt;br /&gt;
            propulsion/tank[2]/contents-lbs GT 0&lt;br /&gt;
            /consumables/fuel/tank[4]/level-lbs LT 0.25&lt;br /&gt;
            /engines/engine[0]/fuel-psi-norm GT 5&lt;br /&gt;
         &amp;lt;/test&amp;gt;            &lt;br /&gt;
         &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 3&lt;br /&gt;
            propulsion/tank[3]/contents-lbs GT 0&lt;br /&gt;
            /consumables/fuel/tank[4]/level-lbs LT 0.25&lt;br /&gt;
            /engines/engine[0]/fuel-psi-norm GT 5&lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[4]/external-flow-rate-pps&amp;lt;/output&amp;gt; &amp;lt;!-- Tank 4 filling --&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;!-- for Tanks 0, 1, 2, 3 consumption --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- from Tank 0 to Collector Tank 4 through Left Valve Fuel Flow Rate in pps --&amp;gt;&lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/from-tank0-to-tank4&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 0      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;      &lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;!-- from Tank 1 to Collector Tank 4 through Left Valve Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/from-tank1-to-tank4&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 1      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;!-- from Tank 2 to Collector Tank 4 through Left Valve Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/from-tank2-to-tank4&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 2      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;      &lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;!-- from Tank 3 to Collector Tank 4 through Left Valve Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/from-tank3-to-tank4&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 3      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;/channel&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ************ RIGHT ENGINE *************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;channel name=&amp;quot;Engine 1 Rotary Right Valve Logic&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;!-- Tank 5 level maintenance --&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Collector Tank 5 works like a constant-level carburetor for right engine --&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      &amp;lt;!-- from selected 'utility' tank to Collector Tank 5 Fuel Flow Rate in pps --&amp;gt;&lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 0               &lt;br /&gt;
            propulsion/tank[0]/contents-lbs GT 0&lt;br /&gt;
            /consumables/fuel/tank[5]/level-lbs LT 0.25&lt;br /&gt;
            /engines/engine[1]/fuel-psi-norm GT 5&lt;br /&gt;
         &amp;lt;/test&amp;gt;            &lt;br /&gt;
         &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 1&lt;br /&gt;
            propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
            /consumables/fuel/tank[5]/level-lbs LT 0.25&lt;br /&gt;
            /engines/engine[1]/fuel-psi-norm GT 5&lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
         &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 2               &lt;br /&gt;
            propulsion/tank[2]/contents-lbs GT 0&lt;br /&gt;
            /consumables/fuel/tank[5]/level-lbs LT 0.25&lt;br /&gt;
            /engines/engine[1]/fuel-psi-norm GT 5&lt;br /&gt;
         &amp;lt;/test&amp;gt;            &lt;br /&gt;
         &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 3&lt;br /&gt;
            propulsion/tank[3]/contents-lbs GT 0&lt;br /&gt;
            /consumables/fuel/tank[5]/level-lbs LT 0.25&lt;br /&gt;
            /engines/engine[1]/fuel-psi-norm GT 5&lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[5]/external-flow-rate-pps&amp;lt;/output&amp;gt; &amp;lt;!-- Tank 5 filling --&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;!-- for Tanks 0, 1, 2, 3 consumption --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- from Tank 0 to Collector Tank 5 through Right Valve Fuel Flow Rate in pps --&amp;gt;&lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/from-tank0-to-tank5&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 0      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;      &lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;!-- from Tank 1 to Collector Tank 5 through Right Valve Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/from-tank1-to-tank5&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 1      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;!-- from Tank 2 to Collector Tank 5 through Right Valve Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/from-tank2-to-tank5&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 2      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;      &lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;!-- from Tank 3 to Collector Tank 5 through Right Valve Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/from-tank3-to-tank5&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 3      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;/channel&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ************ TOTAL FLOW RATE per TANK *************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;channel name=&amp;quot;Total flow rates&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;summer name=&amp;quot;fuel/tank0-flow-rate&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/from-tank0-to-tank4&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/from-tank0-to-tank5&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/summer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
       &amp;lt;summer name=&amp;quot;fuel/tank1-flow-rate&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/from-tank1-to-tank4&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/from-tank1-to-tank5&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/summer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;summer name=&amp;quot;fuel/tank2-flow-rate&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/from-tank2-to-tank4&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/from-tank2-to-tank5&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/summer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;summer name=&amp;quot;fuel/tank3-flow-rate&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/from-tank3-to-tank4&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/from-tank3-to-tank5&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[3]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/summer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;/channel&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JSBSim}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement|Fuel system JSBSim]]&lt;br /&gt;
[[Category:Howto|Fuel system JSBSim]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135417</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135417"/>
		<updated>2022-08-30T10:28:44Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135416</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135416"/>
		<updated>2022-08-30T10:28:31Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135415</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135415"/>
		<updated>2022-08-30T10:28:18Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135414</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135414"/>
		<updated>2022-08-30T10:27:58Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135413</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135413"/>
		<updated>2022-08-30T10:26:40Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135412</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135412"/>
		<updated>2022-08-30T10:26:19Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135411</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135411"/>
		<updated>2022-08-30T10:25:56Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135410</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135410"/>
		<updated>2022-08-30T10:24:50Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135409</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=135409"/>
		<updated>2022-08-30T10:22:37Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
{{See also|Profiling performance}}&lt;br /&gt;
&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note: one tests resulted in errors and finally a core dump. &lt;br /&gt;
Another test on the same hardware, with different drivers, completed.&lt;br /&gt;
Both test details are included.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9537'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 515.65.01&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 8231 FrameTime: 0.121 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 11817 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 11830 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 11822 FrameTime: 0.085 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 11813 FrameTime: 0.085 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 11501 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 11429 FrameTime: 0.087 ms&lt;br /&gt;
[shading] shading=phong: FPS: 11334 FrameTime: 0.088 ms&lt;br /&gt;
[shading] shading=cel: FPS: 11262 FrameTime: 0.089 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 10097 FrameTime: 0.099 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 12168 FrameTime: 0.082 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 12004 FrameTime: 0.083 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 10522 FrameTime: 0.095 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8468 FrameTime: 0.118 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 11776 FrameTime: 0.085 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5667 FrameTime: 0.176 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 8895 FrameTime: 0.112 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1796 FrameTime: 0.557 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2017 FrameTime: 0.496 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2176 FrameTime: 0.460 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 10641 FrameTime: 0.094 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 10085 FrameTime: 0.099 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1323 FrameTime: 0.756 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9418 FrameTime: 0.106 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4595 FrameTime: 0.218 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 11552 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 11498 FrameTime: 0.087 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 11555 FrameTime: 0.087 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 11586 FrameTime: 0.086 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 11454 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 11521 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 11495 FrameTime: 0.087 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 11403 FrameTime: 0.088 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FGQCanvas&amp;diff=135106</id>
		<title>FGQCanvas</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FGQCanvas&amp;diff=135106"/>
		<updated>2022-05-27T12:08:20Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: minor typo correction (protocol name is HTTP)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Canvas Navigation}} &amp;lt;!-- still needs to be added to the navbar --&amp;gt;&lt;br /&gt;
[[File:FGQCanvas Boeing 747-400 PFD and ND.png|thumb|FGQCanvas window showing the PFD, ND and EICAS of the [[Boeing 747-400]].]]&lt;br /&gt;
&lt;br /&gt;
'''FGQCanvas''' is a Qt-based remote [[canvas]] application for [[FlightGear]]. This app can connect to a FlightGear instance which has the built-in HTTP server enabled and display any canvas in real-time at any resolution and/or relative positioning.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
See {{repo link&lt;br /&gt;
| site = sf&lt;br /&gt;
| repo = flightgear&lt;br /&gt;
| path = utils/fgqcanvas/README.md&lt;br /&gt;
| pre  = $FLIGHTGEAR_SRC&lt;br /&gt;
}} for instructions on how to use FGQCanvas.&lt;br /&gt;
&lt;br /&gt;
# Launch FlightGear with &amp;lt;code&amp;gt;--httpd=8080&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Launch FGQCanvas.&lt;br /&gt;
# Follow the on-screen instructions.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
{{See also|FGCanvas}}&lt;br /&gt;
James has spent some of his time since FSWeekend 2016 figuring out how he might drive some ‘real’ CDU hardware from the in-aircraft CDU options, and went for a slightly ambitious approach: he's written an analogue of [[FGPanel]] for the [[canvas]]. &lt;br /&gt;
&lt;br /&gt;
Analogue is actually not quite correct - unlike FGpanel this connects at the view level (canvas properties), it doesn’t run the canvas ‘model’ locally, since that would be very tough ([[Nasal]] + whole [[property tree]] needed). &lt;br /&gt;
&lt;br /&gt;
This distinction was unimportant for the canvas up until now, but it’s going to become important he expects.&lt;br /&gt;
This was prompted by his intention to buy something like this: http://www.flightdecksolutions.com/components/b737ng/b737ng-mipmain/fds-b737ng-pro-mx-cdu-color-vga/&lt;br /&gt;
Which means James needs the CDU screen running on its own screen/device nicely. &lt;br /&gt;
&lt;br /&gt;
And he already wrote a page-based Canvas CDU over a year ago, it’s just sitting on Gijs’ hard-drive awaiting being merged.&lt;br /&gt;
&lt;br /&gt;
This is currently proof-of-concept quality, but already works quite nicely:&lt;br /&gt;
	&lt;br /&gt;
* uses a websocket to send an entire property sub-tree (a canvas, but in principle could be anything) to another process / machine&lt;br /&gt;
* render the canvas at arbitrary sie/resolution&lt;br /&gt;
* it’s ten source files and very simple code&lt;br /&gt;
&lt;br /&gt;
It looks like this:&lt;br /&gt;
	(see the [http://fgfs.goneabitbursar.com/screenshots/remote-canvas-nd.png linked image])&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=300990#p300990 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt;   &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; zakalawe &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 10th, 2016 &lt;br /&gt;
  |added  =  Dec 10th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
James is very happy with this approach so far, since any Canvas display can be trivially run out-of-process, remotely on an Android tablet, Raspberry Pi, iPhone or whatever. (he is hoping to make an app available on the Play store and App store, but one thing at a time). The 777 ND and lower EICAS pages work and look great at larger sizes. James also investigated using a binary protocol for doing the mirroring, current one is an optimised JSON protocol but swapping in a binary protocol is very doable in the future.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=300990#p300990 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt;   &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; zakalawe &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 10th, 2016 &lt;br /&gt;
  |added  =  Dec 10th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This has prompted James to look at some more fundamental pieces of the Canvas, because there are some things the Canvas / Map layer do which are not very performance-friendly, especially the symbol-caching / texture-atlasing can be managed better on the rendering-client side. (Plus all the overhead that comes from doing lots of work in Nasal) The system would benefit from some knowledge about screen-space pixel size, so that each per-frame change in heading / aircraft position does not cause every symbol and route-path element to be recomputed in cartesian space and then re-transmitted over the mirror-socket. (But, even doing that, and with a software rendering, it’s still fast - computers are really quick….)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35543715/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] Announcement: Remote canvas &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; James Turner &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Dec 10th, 2016 &lt;br /&gt;
  |added  =  Dec 10th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Appendix}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hackathon_Proposal:_Multiplayer_Improvements&amp;diff=134377</id>
		<title>Hackathon Proposal: Multiplayer Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hackathon_Proposal:_Multiplayer_Improvements&amp;diff=134377"/>
		<updated>2022-01-13T18:43:25Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Progress after the Hackaton (current state) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hackathon Proposal 2021&lt;br /&gt;
| title          = Multiplayer Improvements&lt;br /&gt;
| sponsor        = MariuszXC&lt;br /&gt;
| supporters     = MariuszXC&lt;br /&gt;
| summary        = Improving ground-referenced presentation of remote players' planes&lt;br /&gt;
| background     = forum topic https://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=39846&lt;br /&gt;
| details        = Due to scenery differences some aircraft are shown partially sunk or floating, even when their GND flag is true. &lt;br /&gt;
| skills         = Nasal&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Progress during the Hackaton ===&lt;br /&gt;
&lt;br /&gt;
Under the topic of Multiplayer Improvements we actually worked on two issues:&lt;br /&gt;
* ground reference of remote aircraft,&lt;br /&gt;
* tracing a cause of low resolution remote aircraft model displayed together with the cockpit model.&lt;br /&gt;
&lt;br /&gt;
With the first issue we had success applying the necessary corrections, so a model does not appear floating or partially sunk.&lt;br /&gt;
Since the offset needed to be applied to a low-res model and to the high-res may be different, we are investigating further on how to dynamically decide which needs to be applied.&lt;br /&gt;
&lt;br /&gt;
With the second issue we identified the cause of the problem, defined a solution and are working on implementing it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Progress after the Hackaton (current state) ===&lt;br /&gt;
&lt;br /&gt;
We tested a solution to the second problem and found it working. We are now waiting for a code review.&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
Code review passed with success.&lt;br /&gt;
As of commit ID bda359 our solution is in Flight Gear.&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=PropertyList_XML_files&amp;diff=134312</id>
		<title>PropertyList XML files</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=PropertyList_XML_files&amp;diff=134312"/>
		<updated>2022-01-12T09:26:49Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Aliasing combined with inclusion */ - corrected xml closing tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PropertyTree}}&lt;br /&gt;
&lt;br /&gt;
Most configuration files in FlightGear are '''PropertyList XML files''' using a subset of XML to encode lists and trees of [[Property Tree Intro|properties]] as XML. PropertyList-XML files are the main mechanism to populate the FlightGear property tree (or a sub branch of it) from XML files, but also to serialize (save) property tree/branch state to an XML file. XML attributes are mainly used as meta-directives for the property tree.&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
{{FGCquote&lt;br /&gt;
  |any --prop: argument can be just as well added to preferences.xml&amp;lt;br/&amp;gt;&lt;br /&gt;
For that, you only need to understand how properties are mapped to XML space and vice versa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sim&amp;gt;&lt;br /&gt;
 &amp;lt;foo n=&amp;quot;0&amp;quot;&amp;gt;teddy&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;foo n=&amp;quot;1&amp;quot;&amp;gt;tiger&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/sim&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;these can be expressed using &amp;lt;nowiki&amp;gt;--prop:/sim/foo[0]=teddy and --prop:/sim/foo[1]=tiger&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
You should however not edit $FG_ROOT/preferences.xml directly - which should be considered readonly, instead, use $FG_HOME, which will be treated as an overlay (on top of $FG_ROOT/preferences.xml).&lt;br /&gt;
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=234298#p234298&lt;br /&gt;
     |title=&amp;lt;nowiki&amp;gt;Re: Command line arguments with 3.4 launcher?&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     |author=&amp;lt;nowiki&amp;gt;Hooray&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     |date=&amp;lt;nowiki&amp;gt;Fri Mar 06&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For additional background information, you'll also want to refer to [[$FG_ROOT]]/Docs/README.introduction.&lt;br /&gt;
&lt;br /&gt;
== Advantages ==&lt;br /&gt;
One advantage of the XML representation is its conceptual simplicity. Every element except for the root PropertyList container represents exactly one property, and every attribute represents metadata for the property associated with its element.&lt;br /&gt;
&lt;br /&gt;
To work with PropertyList-XML files, you can use various means, such as:&lt;br /&gt;
* fgcommands &lt;br /&gt;
* Nasal (props.nas, io.nas)&lt;br /&gt;
* C++ APIs (see links at the end of the navigation sidebar)&lt;br /&gt;
* Text editor: manually edit XML files&lt;br /&gt;
&lt;br /&gt;
Right now, we use attributes for meta-information (data type, read/write flags, aliasing, and tracing). As long as we use attributes for meta-information and elements for data, we'll have a clean upgrade path; otherwise, we could end up with lots of reserved names (like you could not have a property named &amp;quot;alias&amp;quot;, for example, because it would conflict with the attribute), and versioning problems (there's a new attribute named &amp;quot;foo&amp;quot;, so any existing &amp;quot;foo&amp;quot; properties have to be renamed).&lt;br /&gt;
&lt;br /&gt;
The current practice is a little verbose compared with a custom-designed, single-purpose XML format, but it generalizes nicely. Another alternative would be to use XML Namespaces, but (while I support them) those have their detractors even in the hard-core XML community, and I'm worried that they'll confuse people a bit in FlightGear.&lt;br /&gt;
&lt;br /&gt;
A custom-designed XML format for panels, sound, animations, FDMs, etc. could be *much* less verbose, but then we'd be managing n different XML-based formats and parsing libraries.&lt;br /&gt;
&lt;br /&gt;
== Read and write access ==&lt;br /&gt;
{{IO Restrictions}}&lt;br /&gt;
&lt;br /&gt;
== The PropertyList format ==&lt;br /&gt;
The root element of each file is always named &amp;lt;PropertyList&amp;gt;. Tags are almost always found in pairs, with the closing tag having a slash prefixing the tag name, i.e &amp;lt;/PropertyList&amp;gt;, just like in any other XML dialect. The exception is the tag representing an aliased property. In this case a slash is prepended to the closing angle bracket:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;prop alias=&amp;quot;/sim/foo&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Minimal example ===&lt;br /&gt;
A minimal example of a complete property list encoded XML file, looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Property node tags and attributes ===&lt;br /&gt;
Each node in a tree is specified using a single tag that can take attributes describing various things about it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;welcome type=&amp;quot;string&amp;quot;&amp;gt;Welcome to FlightGear! This is a string as a property&amp;lt;/welcome&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Property type attributes ===&lt;br /&gt;
Property typing is optional, all properties are by default string/unspecified and are transparently converted by the property tree, but it never hurts, especially when including spaces around numbers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo type=&amp;quot;string&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;pi type=&amp;quot;float&amp;quot;&amp;gt; 3.14 &amp;lt;/pi&amp;gt;&lt;br /&gt;
 &amp;lt;boo type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/boo&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Indexed nodes ===&lt;br /&gt;
Indexing happens implicitly for identically named properties:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo&amp;gt;Hello&amp;lt;/foo&amp;gt; &lt;br /&gt;
 &amp;lt;foo&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;foo&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
so that the three foo tags become foo[0], foo[1], foo[2] in the property tree, but you can also use explicit indexing by setting the '''n''' attribute of each tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo n=&amp;quot;0&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt; &lt;br /&gt;
 &amp;lt;foo n=&amp;quot;1&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;foo n=&amp;quot;2&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Though the above two examples are equivalent, we tend often to include &amp;quot;n&amp;quot; anyway, just to help people keep track of where they are.  That's most important when there are a lot of subproperties, not in a simple list like the above.&lt;br /&gt;
&lt;br /&gt;
=== Archived properties ===&lt;br /&gt;
To make property settings persistent in between FlightGear sessions, use the userarchive attribute:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo userarchive=&amp;quot;y&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt; &lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Including external PropertyList files ===&lt;br /&gt;
We can also create new PropertyList files by subtyping existing ones using the include attribute. For example, if someone made a DC-3 model for JSBSim, we could subclass from the YASim config file like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList include=&amp;quot;dc3-yasim-set.xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;sim&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;DC-3 (JSBSim).&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;flight-model archive=&amp;quot;y&amp;quot;&amp;gt;jsb&amp;lt;/flight-model&amp;gt;&lt;br /&gt;
 &amp;lt;/sim&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Emmanuel Baranger's models tend to use this technique lot and often have several XML files: the first (the -set.xml) contains very basic information, often just author and version number, and includes the next; the second is for FDM-specific properties (the -yasim-cnf or -jsbsim-cnf); and the last has FDM-independent things like flap settings (the -base.xml). This structuring allows for maximum reusability between FDMs and makes it easier for someone to come along and add another FDM to a model.&lt;br /&gt;
&lt;br /&gt;
{{Caution|The 'new' vec*d types are not fully/propertly integrated  with the underlying PropertyTree APIs yet, which means that some things may not work as expected, which is particularly important when dealing with files using those types (e.g. effects - see below for details). &lt;br /&gt;
{{FGCquote&lt;br /&gt;
  |Instead of:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effect include=&amp;quot;Aircraft/f16/Models/Effects/glass/glass.xml&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
It is best to use&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effect&amp;gt;&lt;br /&gt;
  &amp;lt;inherits-from&amp;gt;Aircraft/f16/Models/Effects/glass/glass&amp;lt;/inherits-from&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/effect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  |{{cite web |url=http://sourceforge.net/p/flightgear/mailman/message/33606423/&lt;br /&gt;
     |title=&amp;lt;nowiki&amp;gt;Re: [Flightgear-devel] xml: Unrecognized data type 'vec3d (Was:&lt;br /&gt;
 Cockpit glass effect)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     |author=&amp;lt;nowiki&amp;gt;Erik Hofman&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     |date=&amp;lt;nowiki&amp;gt;2015-03-17&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aliased properties ===&lt;br /&gt;
Properties can alias other properties, in a similar way to symbolic links in Unix.  When one of them changes the other one changes as well.&lt;br /&gt;
&lt;br /&gt;
For example, this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo&amp;gt;46&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;bar alias=&amp;quot;/foo&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will be functionally identical to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo&amp;gt;46&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;bar&amp;gt;46&amp;lt;/bar&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
except that bar and foo will always be identical.&lt;br /&gt;
&lt;br /&gt;
A PropertyList file can begin with a property subtree that are aliased later in the file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;params&amp;gt;&lt;br /&gt;
  &amp;lt;comm-freq-prop&amp;gt;/radios/comm1/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
  &amp;lt;nav-freq-prop&amp;gt;/radios/nav1/frequencies/selected&amp;lt;/nav-freq-prop&amp;gt;&lt;br /&gt;
 &amp;lt;/params&amp;gt;&lt;br /&gt;
 &amp;lt;chunk&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;number-value&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;property alias=&amp;quot;/params/nav-freq-prop&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/chunk&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aliasing combined with inclusion ===&lt;br /&gt;
The combination of aliasing and inclusion allows for parameterization, which can be of great help both for debugging and mainenance.  The above example could for example instead be split up into&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;params&amp;gt;&lt;br /&gt;
  &amp;lt;comm-freq-prop&amp;gt;/radios/comm1/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
  &amp;lt;nav-freq-prop&amp;gt;/radios/nav1/frequencies/selected&amp;lt;/nav-freq-prop&amp;gt;&lt;br /&gt;
 &amp;lt;/params&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;params include=&amp;quot;MyParams.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;chunk&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;number-value&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;property alias=&amp;quot;/params/nav-freq-prop&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/chunk&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The parameters can be overridden at inclusion&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;instrument include=&amp;quot;../Instruments/navcomm.xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;params&amp;gt;&lt;br /&gt;
   &amp;lt;comm-freq-prop&amp;gt;/radios/comm1/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
   &amp;lt;nav-freq-prop&amp;gt;/radios/nav1/frequencies/selected&amp;lt;/nav-freq-prop&amp;gt;&lt;br /&gt;
  &amp;lt;/params&amp;gt;&lt;br /&gt;
 &amp;lt;/instrument&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;instrument include=&amp;quot;../Instruments/navcomm.xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;params&amp;gt;&lt;br /&gt;
   &amp;lt;comm-freq-prop&amp;gt;/radios/comm2/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
   &amp;lt;nav-freq-prop&amp;gt;/radios/nav2/frequencies/selected&amp;lt;/nav-freq-prop&amp;gt;&lt;br /&gt;
  &amp;lt;/params&amp;gt;&lt;br /&gt;
 &amp;lt;/instrument&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CDATA ==&lt;br /&gt;
Whenever you need to embed text that isn't valid XML, because it may contain XML tokens, you need to wrap the whole section in a CDATA section, this is typically done with [[Nasal]] code, so that it doesn't need to escape XML entities:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;nasal&amp;gt;&lt;br /&gt;
  &amp;lt;![CDATA[&lt;br /&gt;
    # begin of code&lt;br /&gt;
    print(&amp;quot;&amp;lt;!-- Hello World--&amp;gt;\n&amp;quot;);&lt;br /&gt;
    # end of code&lt;br /&gt;
  ]]&amp;gt;&lt;br /&gt;
 &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note how the CDATA section now contains tokens/characters that would otherwise make the XML markup invalid.&lt;br /&gt;
&lt;br /&gt;
== PropertyList-based configuration files ==&lt;br /&gt;
Not everything that is read from an XML file resides in the main property tree; some subsystems also use XML files for initial configuration information and are read into a temporary tree and subsequently discarded. The main property tree is meant to represent the shared state of the program, but when a subsystem happens to use an XML file to set up its internal state that information is ofteb of no use to the rest of the program and thus does not need to continually be in the main tree. Temporary trees are usually deleted as soon as the subsystem is set up (i.e. they exist for perhaps 0.1 sec).  We could just as easily use another format for internal initialization, but since the XML support is already available, it was the easiest route.&lt;br /&gt;
&lt;br /&gt;
The config files serve many different purposes; using the XML-based property-list format for all of them helps a lot, since it allows some common structure and reusable code among all the formats.  Imagine if we had one file format for preferences, a different one for panels (say, with fixed-length fields), a different one for saving a flight (perhaps a binary format), another one for sound configuration (perhaps an INI file), a different one for top-level aircraft configuration (perhaps CSV), yet another one for configuring 3D models (perhaps embedded data strings in the 3D files themselves), etc. etc.&lt;br /&gt;
&lt;br /&gt;
We have config files for totally different purposes, and the fact that they all use XML is simply a convenience for programmers and customizers.&lt;br /&gt;
Here are some of the conventions that we've come up with so far, partly ad-hoc (all paths relative to $FG_ROOT):&lt;br /&gt;
&lt;br /&gt;
* preferences.xml    - the top-level default preferences&lt;br /&gt;
* joysticks.xml      - default joystick bindings, included by preferences.xml&lt;br /&gt;
* keyboard.xml       - default keyboard bindings, included by preferences.xml&lt;br /&gt;
* Aircraft/*-set.xml - aircraft-specific settings, overriding the defaults in preferences.xml (and joystick/keyboard.xml)&lt;br /&gt;
&lt;br /&gt;
Basically, these are the main files in the base package that affect FlightGear's main property tree.  Other files use the property-file format for convenience to populate various data structures, but they do not touch the main tree and are not accessible through the property browser or through the command-line --prop: option; it's just a coincidence that they also use the property-list format:&lt;br /&gt;
&lt;br /&gt;
* materials.xml      - define the materials (textures, colour, lighting) for use in the scenery&lt;br /&gt;
* HUDS/**/*.xml      - configuration files to define the various heads-up displays&lt;br /&gt;
* Aircraft/*/*-sound.xml - configuration files to define sounds played for various aircraft&lt;br /&gt;
* Aircraft/*/Panels/*-panel.xml - configuration files to define 2D panels for various aircraft.&lt;br /&gt;
* Aircraft/*/Instruments/*.xml - configuration files for individual instruments included by the 2D panels.&lt;br /&gt;
* Aircraft/Instruments/*.xml - ditto&lt;br /&gt;
* Aircraft/*/Models/*.xml - animation files for a .ac file, oodles of &amp;lt;animation&amp;gt; nodes!&lt;br /&gt;
&lt;br /&gt;
We also use some XML-based formats that do not (yet?) follow the property-list conventions, including the following:&lt;br /&gt;
&lt;br /&gt;
*  Aircraft/*/*.xml    - JSBSim aero model config files&lt;br /&gt;
*  Aircraft/Aircraft-yasim/*.xml - YASim aero model config files&lt;br /&gt;
*  Engine/*.xml        - JSBSim engine and thruster config files&lt;br /&gt;
&lt;br /&gt;
YASim and JSBSim each uses its own XML format, which is different from the XML format used by the rest of FlightGear.  For YASim, see $FG_ROOT/Aircraft-yasim/README.yasim in the base package; for JSBSim, see the documentation at http://jsbsim.sourceforge.net/.  UIUC uses a non-XML config-file format.&lt;br /&gt;
&lt;br /&gt;
The one advantage of Yasim's approach is efficiency -- Andy copies from the XML straight into the YASim data structures, without building up and tearing down an in-memory property tree first.  For large-scale XML implementations, we *have* to do things that way -- the DOM and XSLT tend to break down catastrophically for large XML documents or high volume.  That's why we designed the Simple API for XML (SAX).&lt;br /&gt;
&lt;br /&gt;
Efficiency doesn't matter much for YASim, since it's a short file and we're reading it only once.  If we're ever processing a lot of XML in the main loop, say, over a network connection or from large GIS databases, we'll need to go with a streaming approach like Andy used.&lt;br /&gt;
&lt;br /&gt;
There are several places to look for properties; one is in the aircraft files, another is all Nasal files, and the last place (and often most useful!) is grepping (searching) through the C++ code. To determine how a property works and what it does often requires looking through any code that uses it. This is a part of FlightGear that we could certainly document better.&lt;br /&gt;
&lt;br /&gt;
As for the relationship between XML and the Property Tree, in some cases in FG (most notably preferences.xml and each AIRCRAFT-set.xml file), the &amp;lt;PropertyList&amp;gt; format directly defines properties in FlightGear's global property tree. In other cases, like the animation files given by /sim/model/path, those do not define properties but the &amp;lt;PropertyList&amp;gt; format is used as a matter of convenience so that FG can parse all of its XML files using the same mechanism and to keep the fundamental structure the same. XML has a lot of different dialects, and having only one for FlightGear really makes it easier, especially since it is very intuitive&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[Conditions]] – Sometimes things can be made conditional on other properties&lt;br /&gt;
* [[Expressions]] – Sometimes mathematical expressions can be used&lt;br /&gt;
&lt;br /&gt;
=== Readme files ===&lt;br /&gt;
* {{readme file|introduction}}&lt;br /&gt;
* {{readme file|properties}}&lt;br /&gt;
* {{readme file|xmlsyntax}} – XML in 15 minutes or less&lt;br /&gt;
* {{readme file|xmlpanel}} – Contains valuable information on the PropertyList format&lt;br /&gt;
&lt;br /&gt;
=== Forum ===&lt;br /&gt;
* http://forum.flightgear.org/viewtopic.php?f=18&amp;amp;t=19503&lt;br /&gt;
&lt;br /&gt;
=== Developer mailing list ===&lt;br /&gt;
* {{cite web |url=http://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/4E79A5CC.80906@t3r.de/ |title=&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Property Tree Question: How to save an aircraft specific property between sessions.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:Property Tree]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=PropertyList_XML_files&amp;diff=134311</id>
		<title>PropertyList XML files</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=PropertyList_XML_files&amp;diff=134311"/>
		<updated>2022-01-12T09:25:15Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Aliased properties */  - corrected xml closing tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PropertyTree}}&lt;br /&gt;
&lt;br /&gt;
Most configuration files in FlightGear are '''PropertyList XML files''' using a subset of XML to encode lists and trees of [[Property Tree Intro|properties]] as XML. PropertyList-XML files are the main mechanism to populate the FlightGear property tree (or a sub branch of it) from XML files, but also to serialize (save) property tree/branch state to an XML file. XML attributes are mainly used as meta-directives for the property tree.&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
{{FGCquote&lt;br /&gt;
  |any --prop: argument can be just as well added to preferences.xml&amp;lt;br/&amp;gt;&lt;br /&gt;
For that, you only need to understand how properties are mapped to XML space and vice versa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sim&amp;gt;&lt;br /&gt;
 &amp;lt;foo n=&amp;quot;0&amp;quot;&amp;gt;teddy&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;foo n=&amp;quot;1&amp;quot;&amp;gt;tiger&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/sim&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;these can be expressed using &amp;lt;nowiki&amp;gt;--prop:/sim/foo[0]=teddy and --prop:/sim/foo[1]=tiger&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
You should however not edit $FG_ROOT/preferences.xml directly - which should be considered readonly, instead, use $FG_HOME, which will be treated as an overlay (on top of $FG_ROOT/preferences.xml).&lt;br /&gt;
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=234298#p234298&lt;br /&gt;
     |title=&amp;lt;nowiki&amp;gt;Re: Command line arguments with 3.4 launcher?&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     |author=&amp;lt;nowiki&amp;gt;Hooray&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     |date=&amp;lt;nowiki&amp;gt;Fri Mar 06&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For additional background information, you'll also want to refer to [[$FG_ROOT]]/Docs/README.introduction.&lt;br /&gt;
&lt;br /&gt;
== Advantages ==&lt;br /&gt;
One advantage of the XML representation is its conceptual simplicity. Every element except for the root PropertyList container represents exactly one property, and every attribute represents metadata for the property associated with its element.&lt;br /&gt;
&lt;br /&gt;
To work with PropertyList-XML files, you can use various means, such as:&lt;br /&gt;
* fgcommands &lt;br /&gt;
* Nasal (props.nas, io.nas)&lt;br /&gt;
* C++ APIs (see links at the end of the navigation sidebar)&lt;br /&gt;
* Text editor: manually edit XML files&lt;br /&gt;
&lt;br /&gt;
Right now, we use attributes for meta-information (data type, read/write flags, aliasing, and tracing). As long as we use attributes for meta-information and elements for data, we'll have a clean upgrade path; otherwise, we could end up with lots of reserved names (like you could not have a property named &amp;quot;alias&amp;quot;, for example, because it would conflict with the attribute), and versioning problems (there's a new attribute named &amp;quot;foo&amp;quot;, so any existing &amp;quot;foo&amp;quot; properties have to be renamed).&lt;br /&gt;
&lt;br /&gt;
The current practice is a little verbose compared with a custom-designed, single-purpose XML format, but it generalizes nicely. Another alternative would be to use XML Namespaces, but (while I support them) those have their detractors even in the hard-core XML community, and I'm worried that they'll confuse people a bit in FlightGear.&lt;br /&gt;
&lt;br /&gt;
A custom-designed XML format for panels, sound, animations, FDMs, etc. could be *much* less verbose, but then we'd be managing n different XML-based formats and parsing libraries.&lt;br /&gt;
&lt;br /&gt;
== Read and write access ==&lt;br /&gt;
{{IO Restrictions}}&lt;br /&gt;
&lt;br /&gt;
== The PropertyList format ==&lt;br /&gt;
The root element of each file is always named &amp;lt;PropertyList&amp;gt;. Tags are almost always found in pairs, with the closing tag having a slash prefixing the tag name, i.e &amp;lt;/PropertyList&amp;gt;, just like in any other XML dialect. The exception is the tag representing an aliased property. In this case a slash is prepended to the closing angle bracket:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;prop alias=&amp;quot;/sim/foo&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Minimal example ===&lt;br /&gt;
A minimal example of a complete property list encoded XML file, looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Property node tags and attributes ===&lt;br /&gt;
Each node in a tree is specified using a single tag that can take attributes describing various things about it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;welcome type=&amp;quot;string&amp;quot;&amp;gt;Welcome to FlightGear! This is a string as a property&amp;lt;/welcome&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Property type attributes ===&lt;br /&gt;
Property typing is optional, all properties are by default string/unspecified and are transparently converted by the property tree, but it never hurts, especially when including spaces around numbers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo type=&amp;quot;string&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;pi type=&amp;quot;float&amp;quot;&amp;gt; 3.14 &amp;lt;/pi&amp;gt;&lt;br /&gt;
 &amp;lt;boo type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/boo&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Indexed nodes ===&lt;br /&gt;
Indexing happens implicitly for identically named properties:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo&amp;gt;Hello&amp;lt;/foo&amp;gt; &lt;br /&gt;
 &amp;lt;foo&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;foo&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
so that the three foo tags become foo[0], foo[1], foo[2] in the property tree, but you can also use explicit indexing by setting the '''n''' attribute of each tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo n=&amp;quot;0&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt; &lt;br /&gt;
 &amp;lt;foo n=&amp;quot;1&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;foo n=&amp;quot;2&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Though the above two examples are equivalent, we tend often to include &amp;quot;n&amp;quot; anyway, just to help people keep track of where they are.  That's most important when there are a lot of subproperties, not in a simple list like the above.&lt;br /&gt;
&lt;br /&gt;
=== Archived properties ===&lt;br /&gt;
To make property settings persistent in between FlightGear sessions, use the userarchive attribute:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo userarchive=&amp;quot;y&amp;quot;&amp;gt;Hello&amp;lt;/foo&amp;gt; &lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Including external PropertyList files ===&lt;br /&gt;
We can also create new PropertyList files by subtyping existing ones using the include attribute. For example, if someone made a DC-3 model for JSBSim, we could subclass from the YASim config file like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList include=&amp;quot;dc3-yasim-set.xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;sim&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;DC-3 (JSBSim).&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;flight-model archive=&amp;quot;y&amp;quot;&amp;gt;jsb&amp;lt;/flight-model&amp;gt;&lt;br /&gt;
 &amp;lt;/sim&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Emmanuel Baranger's models tend to use this technique lot and often have several XML files: the first (the -set.xml) contains very basic information, often just author and version number, and includes the next; the second is for FDM-specific properties (the -yasim-cnf or -jsbsim-cnf); and the last has FDM-independent things like flap settings (the -base.xml). This structuring allows for maximum reusability between FDMs and makes it easier for someone to come along and add another FDM to a model.&lt;br /&gt;
&lt;br /&gt;
{{Caution|The 'new' vec*d types are not fully/propertly integrated  with the underlying PropertyTree APIs yet, which means that some things may not work as expected, which is particularly important when dealing with files using those types (e.g. effects - see below for details). &lt;br /&gt;
{{FGCquote&lt;br /&gt;
  |Instead of:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effect include=&amp;quot;Aircraft/f16/Models/Effects/glass/glass.xml&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
It is best to use&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effect&amp;gt;&lt;br /&gt;
  &amp;lt;inherits-from&amp;gt;Aircraft/f16/Models/Effects/glass/glass&amp;lt;/inherits-from&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/effect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  |{{cite web |url=http://sourceforge.net/p/flightgear/mailman/message/33606423/&lt;br /&gt;
     |title=&amp;lt;nowiki&amp;gt;Re: [Flightgear-devel] xml: Unrecognized data type 'vec3d (Was:&lt;br /&gt;
 Cockpit glass effect)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     |author=&amp;lt;nowiki&amp;gt;Erik Hofman&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     |date=&amp;lt;nowiki&amp;gt;2015-03-17&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aliased properties ===&lt;br /&gt;
Properties can alias other properties, in a similar way to symbolic links in Unix.  When one of them changes the other one changes as well.&lt;br /&gt;
&lt;br /&gt;
For example, this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo&amp;gt;46&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;bar alias=&amp;quot;/foo&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will be functionally identical to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;foo&amp;gt;46&amp;lt;/foo&amp;gt;&lt;br /&gt;
 &amp;lt;bar&amp;gt;46&amp;lt;/bar&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
except that bar and foo will always be identical.&lt;br /&gt;
&lt;br /&gt;
A PropertyList file can begin with a property subtree that are aliased later in the file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;params&amp;gt;&lt;br /&gt;
  &amp;lt;comm-freq-prop&amp;gt;/radios/comm1/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
  &amp;lt;nav-freq-prop&amp;gt;/radios/nav1/frequencies/selected&amp;lt;/nav-freq-prop&amp;gt;&lt;br /&gt;
 &amp;lt;/params&amp;gt;&lt;br /&gt;
 &amp;lt;chunk&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;number-value&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;property alias=&amp;quot;/params/nav-freq-prop&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/chunk&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aliasing combined with inclusion ===&lt;br /&gt;
The combination of aliasing and inclusion allows for parameterization, which can be of great help both for debugging and mainenance.  The above example could for example instead be split up into&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;params&amp;gt;&lt;br /&gt;
  &amp;lt;comm-freq-prop&amp;gt;/radios/comm1/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
  &amp;lt;nav-freq-prop&amp;gt;/radios/nav1/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
 &amp;lt;/params&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;params include=&amp;quot;MyParams.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;chunk&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;number-value&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;property alias=&amp;quot;/params/nav-freq-prop&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/chunk&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The parameters can be overridden at inclusion&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;instrument include=&amp;quot;../Instruments/navcomm.xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;params&amp;gt;&lt;br /&gt;
   &amp;lt;comm-freq-prop&amp;gt;/radios/comm1/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
   &amp;lt;nav-freq-prop&amp;gt;/radios/nav1/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
  &amp;lt;/params&amp;gt;&lt;br /&gt;
 &amp;lt;/instrument&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;instrument include=&amp;quot;../Instruments/navcomm.xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;params&amp;gt;&lt;br /&gt;
   &amp;lt;comm-freq-prop&amp;gt;/radios/comm2/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
   &amp;lt;nav-freq-prop&amp;gt;/radios/nav2/frequencies/selected&amp;lt;/comm-freq-prop&amp;gt;&lt;br /&gt;
  &amp;lt;/params&amp;gt;&lt;br /&gt;
 &amp;lt;/instrument&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CDATA ==&lt;br /&gt;
Whenever you need to embed text that isn't valid XML, because it may contain XML tokens, you need to wrap the whole section in a CDATA section, this is typically done with [[Nasal]] code, so that it doesn't need to escape XML entities:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;nasal&amp;gt;&lt;br /&gt;
  &amp;lt;![CDATA[&lt;br /&gt;
    # begin of code&lt;br /&gt;
    print(&amp;quot;&amp;lt;!-- Hello World--&amp;gt;\n&amp;quot;);&lt;br /&gt;
    # end of code&lt;br /&gt;
  ]]&amp;gt;&lt;br /&gt;
 &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note how the CDATA section now contains tokens/characters that would otherwise make the XML markup invalid.&lt;br /&gt;
&lt;br /&gt;
== PropertyList-based configuration files ==&lt;br /&gt;
Not everything that is read from an XML file resides in the main property tree; some subsystems also use XML files for initial configuration information and are read into a temporary tree and subsequently discarded. The main property tree is meant to represent the shared state of the program, but when a subsystem happens to use an XML file to set up its internal state that information is ofteb of no use to the rest of the program and thus does not need to continually be in the main tree. Temporary trees are usually deleted as soon as the subsystem is set up (i.e. they exist for perhaps 0.1 sec).  We could just as easily use another format for internal initialization, but since the XML support is already available, it was the easiest route.&lt;br /&gt;
&lt;br /&gt;
The config files serve many different purposes; using the XML-based property-list format for all of them helps a lot, since it allows some common structure and reusable code among all the formats.  Imagine if we had one file format for preferences, a different one for panels (say, with fixed-length fields), a different one for saving a flight (perhaps a binary format), another one for sound configuration (perhaps an INI file), a different one for top-level aircraft configuration (perhaps CSV), yet another one for configuring 3D models (perhaps embedded data strings in the 3D files themselves), etc. etc.&lt;br /&gt;
&lt;br /&gt;
We have config files for totally different purposes, and the fact that they all use XML is simply a convenience for programmers and customizers.&lt;br /&gt;
Here are some of the conventions that we've come up with so far, partly ad-hoc (all paths relative to $FG_ROOT):&lt;br /&gt;
&lt;br /&gt;
* preferences.xml    - the top-level default preferences&lt;br /&gt;
* joysticks.xml      - default joystick bindings, included by preferences.xml&lt;br /&gt;
* keyboard.xml       - default keyboard bindings, included by preferences.xml&lt;br /&gt;
* Aircraft/*-set.xml - aircraft-specific settings, overriding the defaults in preferences.xml (and joystick/keyboard.xml)&lt;br /&gt;
&lt;br /&gt;
Basically, these are the main files in the base package that affect FlightGear's main property tree.  Other files use the property-file format for convenience to populate various data structures, but they do not touch the main tree and are not accessible through the property browser or through the command-line --prop: option; it's just a coincidence that they also use the property-list format:&lt;br /&gt;
&lt;br /&gt;
* materials.xml      - define the materials (textures, colour, lighting) for use in the scenery&lt;br /&gt;
* HUDS/**/*.xml      - configuration files to define the various heads-up displays&lt;br /&gt;
* Aircraft/*/*-sound.xml - configuration files to define sounds played for various aircraft&lt;br /&gt;
* Aircraft/*/Panels/*-panel.xml - configuration files to define 2D panels for various aircraft.&lt;br /&gt;
* Aircraft/*/Instruments/*.xml - configuration files for individual instruments included by the 2D panels.&lt;br /&gt;
* Aircraft/Instruments/*.xml - ditto&lt;br /&gt;
* Aircraft/*/Models/*.xml - animation files for a .ac file, oodles of &amp;lt;animation&amp;gt; nodes!&lt;br /&gt;
&lt;br /&gt;
We also use some XML-based formats that do not (yet?) follow the property-list conventions, including the following:&lt;br /&gt;
&lt;br /&gt;
*  Aircraft/*/*.xml    - JSBSim aero model config files&lt;br /&gt;
*  Aircraft/Aircraft-yasim/*.xml - YASim aero model config files&lt;br /&gt;
*  Engine/*.xml        - JSBSim engine and thruster config files&lt;br /&gt;
&lt;br /&gt;
YASim and JSBSim each uses its own XML format, which is different from the XML format used by the rest of FlightGear.  For YASim, see $FG_ROOT/Aircraft-yasim/README.yasim in the base package; for JSBSim, see the documentation at http://jsbsim.sourceforge.net/.  UIUC uses a non-XML config-file format.&lt;br /&gt;
&lt;br /&gt;
The one advantage of Yasim's approach is efficiency -- Andy copies from the XML straight into the YASim data structures, without building up and tearing down an in-memory property tree first.  For large-scale XML implementations, we *have* to do things that way -- the DOM and XSLT tend to break down catastrophically for large XML documents or high volume.  That's why we designed the Simple API for XML (SAX).&lt;br /&gt;
&lt;br /&gt;
Efficiency doesn't matter much for YASim, since it's a short file and we're reading it only once.  If we're ever processing a lot of XML in the main loop, say, over a network connection or from large GIS databases, we'll need to go with a streaming approach like Andy used.&lt;br /&gt;
&lt;br /&gt;
There are several places to look for properties; one is in the aircraft files, another is all Nasal files, and the last place (and often most useful!) is grepping (searching) through the C++ code. To determine how a property works and what it does often requires looking through any code that uses it. This is a part of FlightGear that we could certainly document better.&lt;br /&gt;
&lt;br /&gt;
As for the relationship between XML and the Property Tree, in some cases in FG (most notably preferences.xml and each AIRCRAFT-set.xml file), the &amp;lt;PropertyList&amp;gt; format directly defines properties in FlightGear's global property tree. In other cases, like the animation files given by /sim/model/path, those do not define properties but the &amp;lt;PropertyList&amp;gt; format is used as a matter of convenience so that FG can parse all of its XML files using the same mechanism and to keep the fundamental structure the same. XML has a lot of different dialects, and having only one for FlightGear really makes it easier, especially since it is very intuitive&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[Conditions]] – Sometimes things can be made conditional on other properties&lt;br /&gt;
* [[Expressions]] – Sometimes mathematical expressions can be used&lt;br /&gt;
&lt;br /&gt;
=== Readme files ===&lt;br /&gt;
* {{readme file|introduction}}&lt;br /&gt;
* {{readme file|properties}}&lt;br /&gt;
* {{readme file|xmlsyntax}} – XML in 15 minutes or less&lt;br /&gt;
* {{readme file|xmlpanel}} – Contains valuable information on the PropertyList format&lt;br /&gt;
&lt;br /&gt;
=== Forum ===&lt;br /&gt;
* http://forum.flightgear.org/viewtopic.php?f=18&amp;amp;t=19503&lt;br /&gt;
&lt;br /&gt;
=== Developer mailing list ===&lt;br /&gt;
* {{cite web |url=http://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/4E79A5CC.80906@t3r.de/ |title=&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Property Tree Question: How to save an aircraft specific property between sessions.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:Property Tree]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134308</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134308"/>
		<updated>2022-01-09T18:39:06Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: added more benchmarks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
Note: this section also contains hybrid configurations (e.g. laptops with dual GPU technology)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD FirePro M5950 + Intel i5-2520M ====&lt;br /&gt;
Remark: dual GPU technology laptop, no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 5600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no final glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 750 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 9000'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX 1060 + Intel Core i5-2550K @ 3.4 GHz ====&lt;br /&gt;
Remark: no test details available.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 19000'''&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134307</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134307"/>
		<updated>2022-01-09T18:25:25Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: reorganised into sections, added Intel i5-6200U @ 2.3 GHz&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated graphics ===&lt;br /&gt;
==== Intel i5-4310M @ 2.70 GHz (integrated Intel HD 4600 GPU) ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intel i5-6200U @ 2.3 GHz (integrated Intel UHD 620 GPU) ====&lt;br /&gt;
Remark: CPU clock boosted to 2.8 GHz during benchmarking&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1294'''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel&lt;br /&gt;
    GL_RENDERER:   Mesa Intel(R) HD Graphics 520 (SKL GT2)&lt;br /&gt;
    GL_VERSION:    4.6 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 1500 FrameTime: 0.667 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 1959 FrameTime: 0.510 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 1722 FrameTime: 0.581 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 1736 FrameTime: 0.576 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 1673 FrameTime: 0.598 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 1584 FrameTime: 0.631 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 1554 FrameTime: 0.644 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1559 FrameTime: 0.641 ms&lt;br /&gt;
[shading] shading=cel: FPS: 1571 FrameTime: 0.637 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1123 FrameTime: 0.890 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 1945 FrameTime: 0.514 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 1881 FrameTime: 0.532 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1359 FrameTime: 0.736 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 851 FrameTime: 1.175 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 1646 FrameTime: 0.608 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 757 FrameTime: 1.321 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 585 FrameTime: 1.709 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 529 FrameTime: 1.890 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 669 FrameTime: 1.495 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1489 FrameTime: 0.672 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1236 FrameTime: 0.809 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 188 FrameTime: 5.319 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 1014 FrameTime: 0.986 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 356 FrameTime: 2.809 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1360 FrameTime: 0.735 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1407 FrameTime: 0.711 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1393 FrameTime: 0.718 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 1412 FrameTime: 0.708 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1416 FrameTime: 0.706 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1369 FrameTime: 0.730 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1388 FrameTime: 0.720 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1383 FrameTime: 0.723 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Discrete graphics card ===&lt;br /&gt;
==== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ====&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no final glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA GTX-1060 6GB + AMD R7 3700X @ 4.2 GHz, 8 cores, HT off ====&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @ 2.3 GHz ====&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134304</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134304"/>
		<updated>2022-01-09T12:40:30Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: NVIDIA Quadro K1000M + Intel Core i7-3610Q&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no final glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA GTX-1060 6GB + AMD R7 3700X @4.2 GHz, 8 cores, HT off ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @2.3 GHz ===&lt;br /&gt;
Remark: during glmark2 testing CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134303</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134303"/>
		<updated>2022-01-09T12:39:06Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no final glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA GTX-1060 6GB + AMD R7 3700X @4.2 GHz, 8 cores, HT off ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA Quadro K1000M 1GB + Intel Core i7-3610Q @2.3 GHz ===&lt;br /&gt;
Remark: during glmark2 CPU clock boosted to 3.3 GHz&lt;br /&gt;
&lt;br /&gt;
''' glmark2 Score: 2754 '''&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   Quadro K1000M/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 390.138&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 4154 FrameTime: 0.241 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 4205 FrameTime: 0.238 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 3791 FrameTime: 0.264 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 3718 FrameTime: 0.269 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 3761 FrameTime: 0.266 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 3187 FrameTime: 0.314 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 3200 FrameTime: 0.312 ms&lt;br /&gt;
[shading] shading=phong: FPS: 3078 FrameTime: 0.325 ms&lt;br /&gt;
[shading] shading=cel: FPS: 3065 FrameTime: 0.326 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1674 FrameTime: 0.597 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 4329 FrameTime: 0.231 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 4174 FrameTime: 0.240 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2356 FrameTime: 0.424 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1249 FrameTime: 0.801 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 3550 FrameTime: 0.282 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 888 FrameTime: 1.126 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1453 FrameTime: 0.688 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 952 FrameTime: 1.050 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1277 FrameTime: 0.783 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 977 FrameTime: 1.024 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 2926 FrameTime: 0.342 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1551 FrameTime: 0.645 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 2420 FrameTime: 0.413 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 431 FrameTime: 2.320 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3061 FrameTime: 0.327 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 3775 FrameTime: 0.265 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3058 FrameTime: 0.327 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3776 FrameTime: 0.265 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3375 FrameTime: 0.296 ms&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134297</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134297"/>
		<updated>2022-01-07T16:51:57Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no final glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA GTX-1060 6GB + AMD R7 3700X @4.2 GHz, 8 cores, HT off ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134296</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134296"/>
		<updated>2022-01-07T16:51:18Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no final glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA GTX-1060 6GB + AMD R7 3700X @4.2 GHz, 8 cores, HT off ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134295</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134295"/>
		<updated>2022-01-07T16:50:16Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: GTX-1060 6GB + AMD R7 3700X&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA GTX-1060 6GB + AMD R7 3700X @4.2 GHz, 8 cores, HT off ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 20641''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   GeForce GTX 1060 6GB/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 460.91.03&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 15192 FrameTime: 0.066 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 30325 FrameTime: 0.033 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27634 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 27511 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28397 FrameTime: 0.035 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26079 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 25796 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25060 FrameTime: 0.040 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25321 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 17451 FrameTime: 0.057 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 31963 FrameTime: 0.031 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 31608 FrameTime: 0.032 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 20418 FrameTime: 0.049 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 12585 FrameTime: 0.079 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 28174 FrameTime: 0.035 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 7331 FrameTime: 0.136 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 14034 FrameTime: 0.071 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2363 FrameTime: 0.423 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 2783 FrameTime: 0.359 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2330 FrameTime: 0.429 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 19421 FrameTime: 0.051 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 17291 FrameTime: 0.058 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1349 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 15688 FrameTime: 0.064 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 4783 FrameTime: 0.209 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 28599 FrameTime: 0.035 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 27499 FrameTime: 0.036 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 28191 FrameTime: 0.035 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 27695 FrameTime: 0.036 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 26605 FrameTime: 0.038 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 27340 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 27361 FrameTime: 0.037 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 26984 FrameTime: 0.037 ms&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134294</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134294"/>
		<updated>2022-01-07T16:38:06Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== AMD Tahiti XT [Radeon HD 7970 / R9 280X] + Intel Core i5-11600K @ 3.90GHz ===&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 13781''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     AMD&lt;br /&gt;
    GL_RENDERER:   AMD TAHITI (DRM 2.50.0, 5.11.0-44-generic, LLVM 12.0.0)&lt;br /&gt;
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 21.0.3&lt;br /&gt;
----&lt;br /&gt;
[build] use-vbo=false: FPS: 12290 FrameTime: 0.081 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 19086 FrameTime: 0.052 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 18131 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 18165 FrameTime: 0.055 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 18563 FrameTime: 0.054 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 16185 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 16135 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=phong: FPS: 16042 FrameTime: 0.062 ms&lt;br /&gt;
[shading] shading=cel: FPS: 16036 FrameTime: 0.062 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 9338 FrameTime: 0.107 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 19774 FrameTime: 0.051 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 19534 FrameTime: 0.051 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 15477 FrameTime: 0.065 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 10139 FrameTime: 0.099 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 16858 FrameTime: 0.059 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 5961 FrameTime: 0.168 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 9994 FrameTime: 0.100 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2577 FrameTime: 0.388 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 3585 FrameTime: 0.279 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 3158 FrameTime: 0.317 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 11924 FrameTime: 0.084 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 12073 FrameTime: 0.083 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 1350 FrameTime: 0.741 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 9986 FrameTime: 0.100 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 18815 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 18705 FrameTime: 0.053 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 18787 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 18691 FrameTime: 0.054 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 18755 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 18759 FrameTime: 0.053 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 18654 FrameTime: 0.054 ms&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134291</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134291"/>
		<updated>2022-01-06T15:09:33Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Intel i5-4310M @ 2.70 GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
&lt;br /&gt;
'''glmark2 Score: 1668''' &lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134290</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134290"/>
		<updated>2022-01-06T15:08:29Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
----&lt;br /&gt;
    '''glmark2 Score: 1668''' &lt;br /&gt;
----&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script =----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134289</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134289"/>
		<updated>2022-01-06T15:06:53Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Intel i5-4310M @ 2.70 GHz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
----&lt;br /&gt;
    '''glmark2 Score: 1668''' &lt;br /&gt;
----&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type = details&lt;br /&gt;
| title = (click show to expand)&lt;br /&gt;
| lang = text&lt;br /&gt;
| script = ----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134288</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134288"/>
		<updated>2022-01-06T10:54:47Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: added another result&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
This is a 4th gen. Intel Core i5 mobile (laptop) CPU with built-in graphics.&lt;br /&gt;
----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
    '''glmark2 Score: 1668''' &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA RTX2060 6GB + AMD Ryzen 7 3700X 8-Core 4GHz ===&lt;br /&gt;
Note that some tests resulted in errors and finally a core dump, so there is no glmark2 Score.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
    glmark2 2021.02&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     NVIDIA Corporation&lt;br /&gt;
    GL_RENDERER:   NVIDIA GeForce RTX 2060/PCIe/SSE2&lt;br /&gt;
    GL_VERSION:    4.6.0 NVIDIA 495.46&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 13809 FrameTime: 0.072 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 28367 FrameTime: 0.035 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 27958 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 28120 FrameTime: 0.036 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 28036 FrameTime: 0.036 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 26428 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 26320 FrameTime: 0.038 ms&lt;br /&gt;
[shading] shading=phong: FPS: 25800 FrameTime: 0.039 ms&lt;br /&gt;
[shading] shading=cel: FPS: 25498 FrameTime: 0.039 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 20696 FrameTime: 0.048 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 29599 FrameTime: 0.034 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(15) : error C0000: syntax error, unexpected identifier, expecting &amp;quot;::&amp;quot; at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(36) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(37) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error: 0(38) : warning C1503: undefined variable &amp;quot;TextureCoord&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[bump] bump-render=height: Set up failed&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 22140 FrameTime: 0.045 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 15018 FrameTime: 0.067 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 27482 FrameTime: 0.036 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 8226 FrameTime: 0.122 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 10260 FrameTime: 0.097 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1490 FrameTime: 0.671 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1613 FrameTime: 0.620 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 2147 FrameTime: 0.466 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 14164 FrameTime: 0.071 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 20591 FrameTime: 0.049 ms&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(26) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(26) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
Error: Failed to add fragment shader from file None:&lt;br /&gt;
Error:   0(75) : warning C7022: unrecognized profile specifier &amp;quot;highp&amp;quot;&lt;br /&gt;
Error: 0(75) : error C0502: syntax error at token &amp;quot;highp&amp;quot;&lt;br /&gt;
Error:&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;:Segmentation fault (core dumped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Troubleshooting_performance_issues&amp;diff=134285</id>
		<title>Troubleshooting performance issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Troubleshooting_performance_issues&amp;diff=134285"/>
		<updated>2022-01-05T22:12:45Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Tools for performance evaluation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Troubleshooting}}&lt;br /&gt;
&lt;br /&gt;
'''Troubleshooting performance issues''' will help you if:&lt;br /&gt;
* you think that FlightGear could run smoother on your computer&lt;br /&gt;
* [[Hardware Recommendations|your hardware]] is not exactly from the latest generation&lt;br /&gt;
* you're already fiddling with the settings but can't get any FPS out of it&lt;br /&gt;
* you're trying to track down who's responsible for [[Troubleshooting graphics artifacts|graphics artifacts]] you're seeing.&lt;br /&gt;
By progressively following all the hints of this page, in fact, you'll slowly get to a [[Howto:Debugging FlightGear Crashes|minimum startup profile]] in which most properly configured machines should have no problems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Performance in FlightGear ==&lt;br /&gt;
=== What can I aim at? ===&lt;br /&gt;
It depends on many things as you'll see. It's easier to tell you what you ''should'' aim at: at least 20 FPS (frames per second). Under this value, things get very choppy and especially flying [[VFR]] will be more difficult. A much more decent value is 30 FPS, also to face better possible stuttering.&lt;br /&gt;
&lt;br /&gt;
It makes no sense to exceed the refresh rate of your monitor. This is typically 60 FPS, but some monitors support speeds as high as 120 FPS. &lt;br /&gt;
&lt;br /&gt;
=== How do I see my framerate? ===&lt;br /&gt;
During the simulation, open the ''View &amp;gt; View Options'' menu and toggle ''Show frame rate''. You'll see the number at the bottom right of the screen.&lt;br /&gt;
&lt;br /&gt;
=== How do I use this page? ===&lt;br /&gt;
Below, you'll find a list of performance factors. Each of them affect performance, but it's not the same for everyone. So, to find out what you can give up for less stuttering, more regular FPS, or what's killing the framerate, or what could be causing certain artifacts, you'll have to check each of them. &lt;br /&gt;
&lt;br /&gt;
Most important, you'll have to '''check them singularly''', otherwise you'll never be sure if one of the factors is more determinant than others. Also, make your experiments in a fixed environment, like always starting with the same aircraft on the same runway.&lt;br /&gt;
&lt;br /&gt;
The list order is reasoned, so try to follow it, unless you know what you're doing (e.g. everything worked, until you have fiddled with some particular options and broke it.) We know it's boring, but this is the only way to try to fix these issues.&lt;br /&gt;
&lt;br /&gt;
=== Minimal startup profile as a faster alternative ===&lt;br /&gt;
If you feel like fiddling with configuration files, command line options and such, you can ease the process and make it more thorough by using the [[Howto:Debugging FlightGear Crashes|minimal startup profile]] that is used for troubleshooting crashes. The idea is always the same: change options one at a time (you can do that also in-sim) and tune them to suit your needs.&lt;br /&gt;
&lt;br /&gt;
== Performance factors ==&lt;br /&gt;
=== Hardware setup ===&lt;br /&gt;
*'''Problematic video cards''': There is a list of [[Problematic Video Cards]]. Check that yours is not there.&lt;br /&gt;
*'''Integrated video cards''': These are probably in the above list, but sometimes you can play with them, reducing &amp;quot;eye candy&amp;quot;. Two of these cards are Intel HD graphics 3000 and 4000. With integrated video cards it's also often possible to specify the amount of system memory to be shared and used as video RAM (VRAM).&lt;br /&gt;
*'''Video screen''': Actually, this does not affect performance. The problem though is that with a large screen you might want to use higher resolution, but that ''will'' affect performance (and so will color-depth).&lt;br /&gt;
&lt;br /&gt;
=== Operating system and driver setup ===&lt;br /&gt;
*'''Background programs''': Check that your operating system is not cluttered by unnecessary programs running in the background. Have as little programs running as possible.&lt;br /&gt;
* '''Maximize power performance settings''': If you're running a laptop, chances are your system defaults to a power-saving mode, even with the laptop plugged in. Adjust these settings to maximal power while running FlightGear.&lt;br /&gt;
* '''Disable Optimus/Hybrid Graphics''': Most notebooks that run Windows 7 have the so called Optimus Technology (NVidia) or Hybrid Graphics technology (ATI) onboard. This is meant to increase battery life, by automatically switching of the powerful graphics card when it's not needed. However, FlightGear needs it all the time, even if Optimus says it doesn't! This miscommunication results in low framerates (because your computer will run Flightgear on the weak onboard processor) and often FlightGear will quit with the following error:&lt;br /&gt;
 Unknown exception in the main loop. Aborting... &lt;br /&gt;
 Possible cause: Not enough space&lt;br /&gt;
: If you own an NVidia card, check that it is actually used:&lt;br /&gt;
:# Go to the NVidia control panel. Probably located in the Windows Control Panel.&lt;br /&gt;
:# Open the 3D Settings tab. Now there's two options you can take:&lt;br /&gt;
:#* On the &amp;quot;General settings tab&amp;quot;, set &amp;quot;Prefered graphics processor&amp;quot; to NVidia. The NVidia card will now be used for all software. This can decrease battery life significantly.&lt;br /&gt;
:#* On the &amp;quot;Programm settings&amp;quot; tab, locate &amp;lt;tt&amp;gt;fgfs.exe&amp;lt;/tt&amp;gt; (eg. &amp;lt;tt&amp;gt;C:/Program Files/FlightGear/bin/win32/fgfs.exe&amp;lt;/tt&amp;gt;) and assign the NVidia card to it. From now on the NVidia card will be used for FlightGear.&lt;br /&gt;
* '''Linux users''': Many newer Linux distributions come with 3D enhanced, composite desktop environments (KDE4, Compiz, Fusion...) They're known to consume CPU and GPU resources, even slowing FlightGear down by 10 FPS. Choosing another window manager from the login screen, like XFCE, results in higher FlightGear performance. Setting &amp;quot;Compositing&amp;quot; to &amp;quot;off&amp;quot; in KDE4 might also help.&lt;br /&gt;
&lt;br /&gt;
=== Graphics drivers setup ===&lt;br /&gt;
*'''Graphics card drivers''': Ensure that the manufacturer's graphics card drivers are installed. You may be able to download and install drivers specific to your card from the manufacturer's site. See [[Graphics drivers configuration]].&lt;br /&gt;
* '''Graphics drivers settings''': Disable Anti-Aliasing and Anisotropic Filtering or at least set them to their lowest settings. Decreasing the setting for Mip-Mapping to its lowest setting can also help.&lt;br /&gt;
&lt;br /&gt;
=== FlightGear configuration ===&lt;br /&gt;
From FlightGear Launcher (some options appear also during the simulation, so better to check them there too):&lt;br /&gt;
* '''Rembrandt''': If you enabled the [[Project Rembrandt|Rembrandt renderer]], well, you knew that's experimental. First of all, try to change shadows settings, and consider disabling them. If it's not enough, disable Rembrandt altogether. To check if it's enabled: last tab, ''Advanced &amp;gt; Rendering &amp;gt;'' uncheck ''Rembrandt''.&lt;br /&gt;
* '''3D Clouds''': One of the worst offenders in terms of performance impact. Disable them. (in-sim too)&lt;br /&gt;
* '''Screen resolution''': The amount of pixels that the graphics card must draw affects performance, so reducing resolution can often help.&lt;br /&gt;
* '''Shading''': Set to &amp;quot;flat&amp;quot;&lt;br /&gt;
* '''Fog''': set to &amp;quot;nicest&amp;quot; or &amp;quot;disabled&amp;quot;&lt;br /&gt;
* '''Visibility''': Try reducing visibility, especially with high-detail scenery. (corresponds to ''bare'' settings in-sim, ''View &amp;gt; LOD settings'')&lt;br /&gt;
* '''Log level''': Check that the log level is set to &amp;quot;alert&amp;quot; in ''Advanced &amp;gt; Debugging &amp;gt; Log level''. Logging can cost some FPS.&lt;br /&gt;
* '''Everything else''': Both ''Advanced &amp;gt; features'' and ''Advanced &amp;gt; rendering'' have few settings that you can try out.&lt;br /&gt;
* '''Texture compression''': If you're experiencing stuttering when turning left/right or when loading new tiles, it is possible that texture compression is not handled correctly. Disable it by adding the property &amp;lt;tt&amp;gt;/sim/rendering/texture-compression=off&amp;lt;/tt&amp;gt; in FGrun: ''Advanced &amp;gt; Properties''. This can be tried for nVidia, ATI cards and for Intel integrated chips with MesaGL, that suffer from bugs with texture compression and FlightGear.&lt;br /&gt;
*'''Multithreading''': '''''WARNING!''''' If you know what you're doing, in defaults.xml enable &amp;lt;tt&amp;gt;&amp;lt;multithreading-mode&amp;gt;&amp;lt;/tt&amp;gt;. If your framerate is lower with this setting enabled, and both you and your computer survived, disable it again.&lt;br /&gt;
&lt;br /&gt;
During the simulation:&lt;br /&gt;
* '''Shaders''': If you cranked all the way up these settings, it's very likely the cause of your FPS problem, and possibly of any [[Troubleshooting graphics artifacts|artifact]]. To check, during the simulation go in ''View &amp;gt; Rendering options'', check the [[Shader]]s slider position. If that seems the problem, you can select ''Custom'' and try to see which one, at which position is the cause of your problems. It can be a particular combination of them, too.&lt;br /&gt;
* '''Random features''': Try disabling, one by one, random buildings, random objects, random trees. If any of them seem to be the cause of your problems, you could try to fine-tune their density, or just leave them disabled. They require to reload the scenery.&lt;br /&gt;
* '''Everything else''': Try disabling one by one each of the other rendering features. Some will need a restart.&lt;br /&gt;
* '''Framerate limiter''': be sure that it's unchecked, or that it's not forcing to a too low FPS.&lt;br /&gt;
&lt;br /&gt;
=== FlightGear simulation choices ===&lt;br /&gt;
* '''Time of day''': Changing from nighttime to daytime flying is not only easier on the piloting, but also easier on the graphic requirement. Check the &amp;quot;Time of day&amp;quot; box and select a daytime setting. This is not true, however, if you have shadows enabled: these are pretty consuming, and present only during daytime.&lt;br /&gt;
* '''Location''': KSFO is a wonderful airport but also known for a high-volume of traffic, which can slow performance. Try another airport if you encounter performance issues.&lt;br /&gt;
* '''Rural flying''': While framerate may initially be as slow as 5 fps during takeoff, they may jump 5x or more after flying out to less-populated areas.&lt;br /&gt;
* '''Weather''': Fly in clear skies. Clouds always incur a more or less pronounced performance hit.&lt;br /&gt;
* '''Choice of aircraft''': Certain aircraft have lower resource requirements, especially the UFO. The 777 instead is known to be quite heavy.&lt;br /&gt;
* '''2D panels''': Although 3D cockpits look very tempting, simple 2D panels are much easier on the framerate.&lt;br /&gt;
* '''AI traffic''': [[AI Traffic]] is computer controlled traffic, which includes traffic over the [[Howto: Multiplayer|Multiplayer network]]. By turning off this function you're not able to see other aircraft. Most stuttering, or lag, is caused by the need to load the models for these aircraft while they appear. It can range from a minor annoyance to a crash. Turning off just the computer-generated aircraft (leaving the MP traffic visible), can be done by adding the property &amp;lt;tt&amp;gt;/sim/traffic-manager/enabled=0&amp;lt;/tt&amp;gt; to [[FGRun]], through ''Advanced &amp;gt; Properties''.&lt;br /&gt;
&lt;br /&gt;
=== Nothing worked. Now what? ===&lt;br /&gt;
It is unlikely, so this must be more than a simple performance issue. You'll need to ask for someone's support and provide them some diagnostic data. See [[Troubleshooting graphics artifacts#Requesting support|Troubleshooting graphics artifacts]] for information on how to do that.&lt;br /&gt;
&lt;br /&gt;
== For the geeks out there ==&lt;br /&gt;
=== FPS and frame spacing ===&lt;br /&gt;
Frames per second is an average by definition, and as such is not an optimal indicator of performance, because you could have half a second with 100 FPS and the other half with 0 FPS. You'd get a respectable 50 FPS but an unacceptable stutter of 0.5 seconds. A much better one is keeping track of the maximum frame spacing (i.e. the delay/time needed to create new frames), that gives a measure in milliseconds of the worst performance during a fixed interval.&lt;br /&gt;
&lt;br /&gt;
=== Tools for performance evaluation ===&lt;br /&gt;
The performance impact can be evaluated by using:&lt;br /&gt;
* The frame rate counter (frames created per second)&lt;br /&gt;
* The frame spacing indicator (latencies between rendered frames)&lt;br /&gt;
* The [[Howto:Use the system monitor|built-in system monitor]] (can be inspected via telnet/http using [[Telnet usage|--telnet=5900]]) &lt;br /&gt;
* The OSG on-screen stats&lt;br /&gt;
* The [[Built-in Profiler]]&lt;br /&gt;
* Testing your [[OpenGL performance]]&lt;br /&gt;
&lt;br /&gt;
=== Some more details on the inner workings ===&lt;br /&gt;
==== FPS throttling ====&lt;br /&gt;
Older versions of FG (before 1.9) would get choppy if the frame rate got too high (well above the monitor refresh rate) but newer versions seem to have less problems with this. However, depending on your system setup you may need to throttle the frame rate to prevent choppiness at high frame rates, but it's not very likely with the current version of FlightGear. Most users anyway don't have enough GPU power to be concerned about frame rates getting too high with current FlightGear versions and those (lucky) users can, to some extent, throttle frame rates by increasing/maximizing eye candy settings.&lt;br /&gt;
&lt;br /&gt;
==== How FPS affects the simulation ====&lt;br /&gt;
Keep in mind that things like nasal listeners, animations and other parts of the sim run at the video frame (main loop) rate and if your frame rate gets too low these things might not work as well as they should. As an example, if your aircraft is one armed with machine guns, you may see the guns change rate of fire if your frame rate is too low. This will definitely be the case with the JSBSim P-51D if your frame rates are below 30fps. As more things are decoupled from the main loop this should become less of an issue in future versions of FlightGear.&lt;br /&gt;
&lt;br /&gt;
Additionally, the more the framerate decreases, the more other features of the simulation will suffer. The current [[FlightGear]] software architecture is such that long rendering times (slow framerates) may prevent other parts of the flight simulator, such as the autopilot, from having sufficient CPU time to respond correctly in the context of the simulation.&lt;br /&gt;
&lt;br /&gt;
==== More on factors ====&lt;br /&gt;
FlightGear's framerate is influenced by various factors, including:&lt;br /&gt;
* [[scenery]] complexity (terrain, clouds, trees, particles, random 3D objects, multiplayer/AI traffic, animated jetways)&lt;br /&gt;
* [[cockpit]] complexity (2D vs. 3D)&lt;br /&gt;
* environmental options (eg. visibility, precipitation)&lt;br /&gt;
* [[FDM]] update interval&lt;br /&gt;
* AI scenarios&lt;br /&gt;
* [[aircraft]] speed (scenery paging)&lt;br /&gt;
* rendering options&lt;br /&gt;
* debugging level&lt;br /&gt;
&lt;br /&gt;
=== A note from the developers ===&lt;br /&gt;
==== Performance and the OpenGL Shading Language (GLSL) ====&lt;br /&gt;
If working through this article doesn't solve the problem, you are probably facing a hardware/driver issue, which means that you may need to fix your drivers (version or settings).&lt;br /&gt;
&lt;br /&gt;
If however at some point the error stops from occurring, that would suggest that FG is using some &amp;quot;code paths&amp;quot; that are not supported by your current driver. We have an increasing number of GLSL shaders, while most of the existing FG code was really only written with a fixed rendering pipeline in mind - and in fact, much of it even predates the OSG port, such as for example the GUI (PLIB/PUI).&lt;br /&gt;
&lt;br /&gt;
In summary, our way of using OSG is not particularly optimized, and we're doing a lot of things that are known to be inefficient, such as having lots of GL state changes, and using legacy GL code in conjunction with more modern code. All of these also affecting compatibility, because GLSL, unlike DirectX shader code, is not bytecode, but compiled on-the-fly by your driver - in other words, each GPU vendor will typically have their own GLSL compiler implementation, and these are known to be fragile under certain circumstances. We do not have the resources to test each shader on all major hardware platforms, so we really rely on end-user quality feedback, e.g. by using tools like gDebugger or the corresponding ATI/AMD and nvidia equivalents.&lt;br /&gt;
&lt;br /&gt;
==== The move to OpenSceneGraph (OSG) ====&lt;br /&gt;
Some people have been suggesting to our core/shaders developers to switch to AMD/ATI or even Intel hardware in order to get rid of certain problems. But it's not as simple as that to be honest: FlightGear is a fairly old code base, and it also isn't particularly modern - these days, many parts are basically unmaintained, and haven't been touched in years, despite containing lots of legacy code.&lt;br /&gt;
&lt;br /&gt;
OSG is much more powerful than you may think, but it cannot magically fix all the problems that FlightGear introduces, we have a ton of features that basically still date back to the pre-OSG days, i.e. when we were using purely PLIB and SDL. OSG itself is generally rock-solid and there are rarely any issues found with it. To see for yourself, just run fgviewer or any of the OSG examples (osgviewer).&lt;br /&gt;
&lt;br /&gt;
As recently pointed out elsewhere, those OSG examples even support Intel GMA cards, often even shaders to some degree - but we have never really formalized the way OpenGL/OSG code is written/developed for FlightGear, including effects and shaders.&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
[[es:Resolviendo_problemas_de_rendimiento]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134284</id>
		<title>OpenGL performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenGL_performance&amp;diff=134284"/>
		<updated>2022-01-05T22:12:28Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: OpenGL performance for i5-4310M&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenGL performance ==&lt;br /&gt;
OpenGL performance can be tested using glmark2 program. It is available in most Linux distributions. In Debian derived distributions (like Ubuntu) it can be installed by issuing ''sudo apt install glmark2'' from command line.&lt;br /&gt;
&lt;br /&gt;
The data presented below was taken by running ''glmark2'' without any additional options, i.e. with default settings, on an otherwise idle system.&lt;br /&gt;
&lt;br /&gt;
By comparing your results with measurements taken on other similar systems you can verify if your hardware and software combination is performing as expected.&lt;br /&gt;
&lt;br /&gt;
=== Intel i5-4310M @ 2.70 GHz ===&lt;br /&gt;
----&lt;br /&gt;
    glmark2 2014.03+git20150611.fa71af2d&lt;br /&gt;
----&lt;br /&gt;
    OpenGL Information&lt;br /&gt;
    GL_VENDOR:     Intel Open Source Technology Center&lt;br /&gt;
    GL_RENDERER:   Mesa DRI Intel(R) Haswell Mobile &lt;br /&gt;
    GL_VERSION:    3.0 Mesa 18.0.5&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[build] use-vbo=false: FPS: 2256 FrameTime: 0.443 ms&lt;br /&gt;
[build] use-vbo=true: FPS: 2500 FrameTime: 0.400 ms&lt;br /&gt;
[texture] texture-filter=nearest: FPS: 2183 FrameTime: 0.458 ms&lt;br /&gt;
[texture] texture-filter=linear: FPS: 2180 FrameTime: 0.459 ms&lt;br /&gt;
[texture] texture-filter=mipmap: FPS: 2250 FrameTime: 0.444 ms&lt;br /&gt;
[shading] shading=gouraud: FPS: 2042 FrameTime: 0.490 ms&lt;br /&gt;
[shading] shading=blinn-phong-inf: FPS: 2049 FrameTime: 0.488 ms&lt;br /&gt;
[shading] shading=phong: FPS: 1938 FrameTime: 0.516 ms&lt;br /&gt;
[shading] shading=cel: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[bump] bump-render=high-poly: FPS: 1701 FrameTime: 0.588 ms&lt;br /&gt;
[bump] bump-render=normals: FPS: 2419 FrameTime: 0.413 ms&lt;br /&gt;
[bump] bump-render=height: FPS: 2382 FrameTime: 0.420 ms&lt;br /&gt;
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1758 FrameTime: 0.569 ms&lt;br /&gt;
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 886 FrameTime: 1.129 ms&lt;br /&gt;
[pulsar] light=false:quads=5:texture=false: FPS: 2008 FrameTime: 0.498 ms&lt;br /&gt;
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 749 FrameTime: 1.335 ms&lt;br /&gt;
[desktop] effect=shadow:windows=4: FPS: 1094 FrameTime: 0.914 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 770 FrameTime: 1.299 ms&lt;br /&gt;
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 655 FrameTime: 1.527 ms&lt;br /&gt;
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 857 FrameTime: 1.167 ms&lt;br /&gt;
[ideas] speed=duration: FPS: 1776 FrameTime: 0.563 ms&lt;br /&gt;
[jellyfish] &amp;lt;default&amp;gt;: FPS: 1275 FrameTime: 0.784 ms&lt;br /&gt;
[terrain] &amp;lt;default&amp;gt;: FPS: 173 FrameTime: 5.780 ms&lt;br /&gt;
[shadow] &amp;lt;default&amp;gt;: FPS: 805 FrameTime: 1.242 ms&lt;br /&gt;
[refract] &amp;lt;default&amp;gt;: FPS: 268 FrameTime: 3.731 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2038 FrameTime: 0.491 ms&lt;br /&gt;
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2039 FrameTime: 0.490 ms&lt;br /&gt;
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2028 FrameTime: 0.493 ms&lt;br /&gt;
[function] fragment-complexity=low:fragment-steps=5: FPS: 2037 FrameTime: 0.491 ms&lt;br /&gt;
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2051 FrameTime: 0.488 ms&lt;br /&gt;
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1879 FrameTime: 0.532 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1922 FrameTime: 0.520 ms&lt;br /&gt;
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2039 FrameTime: 0.490 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
    '''glmark2 Score: 1668''' &lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Work_with_AC3D_files_in_Blender&amp;diff=133902</id>
		<title>Howto:Work with AC3D files in Blender</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Work_with_AC3D_files_in_Blender&amp;diff=133902"/>
		<updated>2021-12-10T10:17:30Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Importing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many [[FlightGear]] [[aircraft]] modellers prefer [[Blender]] as their 3D-modelling editor. Blender is a powerful, robust and open-source 3D modelling suite. FlightGear primarily uses the [[AC3D_file_format|AC3D file format]] (&amp;lt;code&amp;gt;.ac&amp;lt;/code&amp;gt;) to model aircraft, [[scenery]] models, and many other things. With the AC3D file format first released in 1996&amp;lt;ref&amp;gt;http://fileformats.archiveteam.org/wiki/AC3D_Model&amp;lt;/ref&amp;gt;, modern versions of Blender do not bother maintaining support for the format. However, add-ons exist to extend Blender's functionality in order to allow the import and export of these files.&lt;br /&gt;
&lt;br /&gt;
{{TOC limit|3}}&lt;br /&gt;
&lt;br /&gt;
== Importing and exporting AC3D files ==&lt;br /&gt;
{{note| Modern versions of Blender (2.5+) require an add-on to work with AC3D (&amp;lt;code&amp;gt;.ac&amp;lt;/code&amp;gt;) files.}}&lt;br /&gt;
=== Addons ===&lt;br /&gt;
&lt;br /&gt;
The prominent add-on for using AC3D files in Blender is called ''Blender-AC3D''. It has been forked from its original to provide support for Blender 2.8.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Blender version !! Addon !! Remarks&lt;br /&gt;
|-&lt;br /&gt;
| 2.80 - 2.90 || {{github source|user=NikolaiVChr|repo=Blender-AC3D|branch=2.80|text=NikolaiVChr/Blender-AC3D (GitHub)}}. || NikolaiVChr's fork of majic79's add-on, with a special branch for Blender 2.80&lt;br /&gt;
|-&lt;br /&gt;
| 2.63 - 2.7a || {{github source|user=NikolaiVChr|repo=Blender-AC3D|branch=master|text=NikolaiVChr/Blender-AC3D (GitHub)}} || NikolaiVChr's fork of majic79's add-on. For more information read {{forum link|t=13442|title=Blender 2.6 AC3D Importer &amp;amp; Exporter}} &lt;br /&gt;
|-&lt;br /&gt;
| 2.62 || {{github source|proj=majic79|repo=Blender-AC3D|branch=BL2.62|text=majic79/Blender-AC3D (GitHub)}} || Branch of majic79's plugin targeting Blender 2.62 (Abandoned)&lt;br /&gt;
|-&lt;br /&gt;
| 2.60 || {{github source|proj=majic79|repo=Blender-AC3D|branch=BL2.60|text=majic79/Blender-AC3D (GitHub)}} || Branch of majic79's plugin targeting Blender 2.60 (Abandoned)&lt;br /&gt;
|-&lt;br /&gt;
| 2.59 || {{github source|proj=majic79|repo=Blender-AC3D|branch=BL2.59|text=majic79/Blender-AC3D (GitHub)}} || Branch of majic79's plugin targeting Blender 2.59 (Abandoned)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;2.5 || N/A || Versions of Blender below 2.5 include out of the box support for the AC3D file format, simply enable the add-on in &amp;lt;code&amp;gt;Preferences &amp;gt; Addons&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Before you export a model with this addon, make sure that you set the UV map and texture inside the material, not just inside the UV editor.  See the video tutorial [https://www.youtube.com/watch?v=URMjoFSm5pk here].&lt;br /&gt;
* Before you export make sure to exit ''Edit Mode'' or some of your last changes won't be exported.&lt;br /&gt;
* Inside Blender when you want to see the textures, be sure to set the shader to GLSL (or for 2.7+ just set view mode to materials). Alternatively set textured solid in solid view.&lt;br /&gt;
* To see textured surfaces as they will be shown in FlightGear, go into the material texture and set the blend type to ''Multiply'' instead of the default ''Mix'' (the importer will also do this automatically). An example plane that will look very different if this is not done is the FGAddon aircraft {{fgaddon source|path=Aircraft/ASK13|commit=1363|text=ASK-13}}, notice the wingtips.&lt;br /&gt;
* The final model might display color mismatches (Texture color vs Material color) when viewed in Flightgear. Hand editing the [[AC files: Basic changes to textures and colors#Materials|materials]] section of the exported AC3D file might fix this.&lt;br /&gt;
* If you wonder where to put the scripts you could open blender's user preferences ({{Key press|Ctrl|Alt|U}}, or ''File &amp;gt; User Preferences'') tick for example Import/Export and extent the information concerning an existing script. Usually this throws the path. For for example Ubuntu 14.04LTS/Blender 2.79b it is: &amp;lt;code&amp;gt;/usr/share/blender/scripts/addons/&amp;lt;/code&amp;gt;. In recent Ubuntu versions blender is distributed as a snap image. In such cases blender addon scripts are placed in: &amp;lt;code&amp;gt;$HOME/.config/blender/X.YY/scripts/addons/&amp;lt;/code&amp;gt; (where X.YY is blender version, for example 2.82).&lt;br /&gt;
* Be aware that Blender only has greyscale for emission and ambient colors. If you want to export/import a color for those, import/export options gives you capability to choose to use Blenders mirror color for that.&lt;br /&gt;
* The importer will not fail if it does not locate a texture, instead it will issue warnings. Pull down the top bar to see if there was any, they will be orange lines.&lt;br /&gt;
* The exporter will not fail if it tries to save a texture without data, instead it will issue warnings. Pull down the top bar to see if there was any, they will be orange lines. Notice that since AC3D only support 1 texture per object, if multiple textures are attached to an object in Blender the last of the textures that has any data, if any, will be the one that get exported, but it will still warn about the missing data in the others, so take care.&lt;br /&gt;
* Orientation: The default settings in the plugin correspond to the FlightGear coordinate system (-X forward and Z up, also see: [[Howto:3D_Aircraft_Models]]). The default settings are: Forward -Z and Up Y.&lt;br /&gt;
&lt;br /&gt;
You can report bugs with the addon [https://github.com/NikolaiVChr/Blender-AC3D/issues here], but please include problematic &amp;lt;code&amp;gt;.ac&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.blend&amp;lt;/code&amp;gt; files and their textures.&lt;br /&gt;
&lt;br /&gt;
=== Importing ===&lt;br /&gt;
&lt;br /&gt;
{{main article|Working with FlightGear models in Blender}}&lt;br /&gt;
{{note|If you do not see the option for &amp;lt;code&amp;gt;AC3D (.ac)&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;File &amp;gt; Import&amp;lt;/code&amp;gt;, your add-on is either not installed, not enabled, or not working correctly.}}&lt;br /&gt;
Once the add-on is installed, AC3D models can be imported in the same manner as any other model foramat into Blender by using the &amp;lt;code&amp;gt; File &amp;gt; Import &amp;gt; AC3D (.ac)&amp;lt;/code&amp;gt; dialog. &lt;br /&gt;
[[File:Blender AC3D import dialog.png|thumb|This figure demonstrates how to import an AC3D model in Blender using a third-party addon.]]&lt;br /&gt;
&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
{{3d}}&lt;br /&gt;
[[Category:Modeling]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Work_with_AC3D_files_in_Blender&amp;diff=133901</id>
		<title>Howto:Work with AC3D files in Blender</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Work_with_AC3D_files_in_Blender&amp;diff=133901"/>
		<updated>2021-12-10T10:14:06Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Notes */ - added scripts location in cases when blender is distributed as a snap image.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many [[FlightGear]] [[aircraft]] modellers prefer [[Blender]] as their 3D-modelling editor. Blender is a powerful, robust and open-source 3D modelling suite. FlightGear primarily uses the [[AC3D_file_format|AC3D file format]] (&amp;lt;code&amp;gt;.ac&amp;lt;/code&amp;gt;) to model aircraft, [[scenery]] models, and many other things. With the AC3D file format first released in 1996&amp;lt;ref&amp;gt;http://fileformats.archiveteam.org/wiki/AC3D_Model&amp;lt;/ref&amp;gt;, modern versions of Blender do not bother maintaining support for the format. However, add-ons exist to extend Blender's functionality in order to allow the import and export of these files.&lt;br /&gt;
&lt;br /&gt;
{{TOC limit|3}}&lt;br /&gt;
&lt;br /&gt;
== Importing and exporting AC3D files ==&lt;br /&gt;
{{note| Modern versions of Blender (2.5+) require an add-on to work with AC3D (&amp;lt;code&amp;gt;.ac&amp;lt;/code&amp;gt;) files.}}&lt;br /&gt;
=== Addons ===&lt;br /&gt;
&lt;br /&gt;
The prominent add-on for using AC3D files in Blender is called ''Blender-AC3D''. It has been forked from its original to provide support for Blender 2.8.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Blender version !! Addon !! Remarks&lt;br /&gt;
|-&lt;br /&gt;
| 2.80 - 2.90 || {{github source|user=NikolaiVChr|repo=Blender-AC3D|branch=2.80|text=NikolaiVChr/Blender-AC3D (GitHub)}}. || NikolaiVChr's fork of majic79's add-on, with a special branch for Blender 2.80&lt;br /&gt;
|-&lt;br /&gt;
| 2.63 - 2.7a || {{github source|user=NikolaiVChr|repo=Blender-AC3D|branch=master|text=NikolaiVChr/Blender-AC3D (GitHub)}} || NikolaiVChr's fork of majic79's add-on. For more information read {{forum link|t=13442|title=Blender 2.6 AC3D Importer &amp;amp; Exporter}} &lt;br /&gt;
|-&lt;br /&gt;
| 2.62 || {{github source|proj=majic79|repo=Blender-AC3D|branch=BL2.62|text=majic79/Blender-AC3D (GitHub)}} || Branch of majic79's plugin targeting Blender 2.62 (Abandoned)&lt;br /&gt;
|-&lt;br /&gt;
| 2.60 || {{github source|proj=majic79|repo=Blender-AC3D|branch=BL2.60|text=majic79/Blender-AC3D (GitHub)}} || Branch of majic79's plugin targeting Blender 2.60 (Abandoned)&lt;br /&gt;
|-&lt;br /&gt;
| 2.59 || {{github source|proj=majic79|repo=Blender-AC3D|branch=BL2.59|text=majic79/Blender-AC3D (GitHub)}} || Branch of majic79's plugin targeting Blender 2.59 (Abandoned)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;2.5 || N/A || Versions of Blender below 2.5 include out of the box support for the AC3D file format, simply enable the add-on in &amp;lt;code&amp;gt;Preferences &amp;gt; Addons&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Before you export a model with this addon, make sure that you set the UV map and texture inside the material, not just inside the UV editor.  See the video tutorial [https://www.youtube.com/watch?v=URMjoFSm5pk here].&lt;br /&gt;
* Before you export make sure to exit ''Edit Mode'' or some of your last changes won't be exported.&lt;br /&gt;
* Inside Blender when you want to see the textures, be sure to set the shader to GLSL (or for 2.7+ just set view mode to materials). Alternatively set textured solid in solid view.&lt;br /&gt;
* To see textured surfaces as they will be shown in FlightGear, go into the material texture and set the blend type to ''Multiply'' instead of the default ''Mix'' (the importer will also do this automatically). An example plane that will look very different if this is not done is the FGAddon aircraft {{fgaddon source|path=Aircraft/ASK13|commit=1363|text=ASK-13}}, notice the wingtips.&lt;br /&gt;
* The final model might display color mismatches (Texture color vs Material color) when viewed in Flightgear. Hand editing the [[AC files: Basic changes to textures and colors#Materials|materials]] section of the exported AC3D file might fix this.&lt;br /&gt;
* If you wonder where to put the scripts you could open blender's user preferences ({{Key press|Ctrl|Alt|U}}, or ''File &amp;gt; User Preferences'') tick for example Import/Export and extent the information concerning an existing script. Usually this throws the path. For for example Ubuntu 14.04LTS/Blender 2.79b it is: &amp;lt;code&amp;gt;/usr/share/blender/scripts/addons/&amp;lt;/code&amp;gt;. In recent Ubuntu versions blender is distributed as a snap image. In such cases blender addon scripts are placed in: &amp;lt;code&amp;gt;$HOME/.config/blender/X.YY/scripts/addons/&amp;lt;/code&amp;gt; (where X.YY is blender version, for example 2.82).&lt;br /&gt;
* Be aware that Blender only has greyscale for emission and ambient colors. If you want to export/import a color for those, import/export options gives you capability to choose to use Blenders mirror color for that.&lt;br /&gt;
* The importer will not fail if it does not locate a texture, instead it will issue warnings. Pull down the top bar to see if there was any, they will be orange lines.&lt;br /&gt;
* The exporter will not fail if it tries to save a texture without data, instead it will issue warnings. Pull down the top bar to see if there was any, they will be orange lines. Notice that since AC3D only support 1 texture per object, if multiple textures are attached to an object in Blender the last of the textures that has any data, if any, will be the one that get exported, but it will still warn about the missing data in the others, so take care.&lt;br /&gt;
* Orientation: The default settings in the plugin correspond to the FlightGear coordinate system (-X forward and Z up, also see: [[Howto:3D_Aircraft_Models]]). The default settings are: Forward -Z and Up Y.&lt;br /&gt;
&lt;br /&gt;
You can report bugs with the addon [https://github.com/NikolaiVChr/Blender-AC3D/issues here], but please include problematic &amp;lt;code&amp;gt;.ac&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.blend&amp;lt;/code&amp;gt; files and their textures.&lt;br /&gt;
&lt;br /&gt;
=== Importing ===&lt;br /&gt;
&lt;br /&gt;
{{main article|Working with FlightGear models in Blender}}&lt;br /&gt;
{{note|If you do not see the option for &amp;lt;code&amp;gt;AC3D (.ac)&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;File &amp;gt; Import&amp;lt;/code&amp;gt;, your add-on is either not installed, or not working correctly.}}&lt;br /&gt;
Once the add-on is installed, AC3D models can be imported in the same manner as any other model foramat into Blender by using the &amp;lt;code&amp;gt; File &amp;gt; Import &amp;gt; AC3D (.ac)&amp;lt;/code&amp;gt; dialog. &lt;br /&gt;
[[File:Blender AC3D import dialog.png|thumb|This figure demonstrates how to import an AC3D model in Blender using a third-party addon.]]&lt;br /&gt;
&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
{{3d}}&lt;br /&gt;
[[Category:Modeling]]&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hackathon_Proposal:_Multiplayer_Improvements&amp;diff=133819</id>
		<title>Hackathon Proposal: Multiplayer Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hackathon_Proposal:_Multiplayer_Improvements&amp;diff=133819"/>
		<updated>2021-11-27T20:39:03Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: /* Progress during the Hackaton */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hackathon Proposal 2021&lt;br /&gt;
| title          = Multiplayer Improvements&lt;br /&gt;
| sponsor        = MariuszXC&lt;br /&gt;
| supporters     = MariuszXC&lt;br /&gt;
| summary        = Improving ground-referenced presentation of remote players' planes&lt;br /&gt;
| background     = forum topic https://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=39846&lt;br /&gt;
| details        = Due to scenery differences some aircraft are shown partially sunk or floating, even when their GND flag is true. &lt;br /&gt;
| skills         = Nasal&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Progress during the Hackaton ===&lt;br /&gt;
&lt;br /&gt;
Under the topic of Multiplayer Improvements we actually worked on two issues:&lt;br /&gt;
* ground reference of remote aircraft,&lt;br /&gt;
* tracing a cause of low resolution remote aircraft model displayed together with the cockpit model.&lt;br /&gt;
&lt;br /&gt;
With the first issue we had success applying the necessary corrections, so a model does not appear floating or partially sunk.&lt;br /&gt;
Since the offset needed to be applied to a low-res model and to the high-res may be different, we are investigating further on how to dynamically decide which needs to be applied.&lt;br /&gt;
&lt;br /&gt;
With the second issue we identified the cause of the problem, defined a solution and are working on implementing it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Progress after the Hackaton (current state) ===&lt;br /&gt;
&lt;br /&gt;
We tested a solution to the second problem and found it working. We are now waiting for a code review.&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hackathon_Proposal:_Multiplayer_Improvements&amp;diff=133718</id>
		<title>Hackathon Proposal: Multiplayer Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hackathon_Proposal:_Multiplayer_Improvements&amp;diff=133718"/>
		<updated>2021-11-10T09:00:32Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: Hackaton progress description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hackathon Proposal 2021&lt;br /&gt;
| title          = Multiplayer Improvements&lt;br /&gt;
| sponsor        = MariuszXC&lt;br /&gt;
| supporters     = MariuszXC&lt;br /&gt;
| summary        = Improving ground-referenced presentation of remote players' planes&lt;br /&gt;
| background     = forum topic https://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=39846&lt;br /&gt;
| details        = Due to scenery differences some aircraft are shown partially sunk or floating, even when their GND flag is true. &lt;br /&gt;
| skills         = Nasal&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Progress during the Hackaton ===&lt;br /&gt;
&lt;br /&gt;
Under the topic of Multiplayer Improvements we actually worked on two issues:&lt;br /&gt;
* ground reference of remote aircraft,&lt;br /&gt;
* tracing a cause of low resolution remote aircraft model displayed together with the cockpit model.&lt;br /&gt;
&lt;br /&gt;
With the first issue we had success applying the necessary corrections, so a model does not appear floating or partially sunk.&lt;br /&gt;
Since the offset needed to be appliet to a low-res model and to the high-res may be different, we are investigating further on how to dynamically decide which needs to be applied.&lt;br /&gt;
&lt;br /&gt;
With the second issue we identified the cause of the problem, defined a solution and are working on implementing it.&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Hackathon_Proposal:_Multiplayer_Improvements&amp;diff=133650</id>
		<title>Hackathon Proposal: Multiplayer Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Hackathon_Proposal:_Multiplayer_Improvements&amp;diff=133650"/>
		<updated>2021-10-30T09:52:24Z</updated>

		<summary type="html">&lt;p&gt;MariuszXC: Created page with &amp;quot;{{Hackathon Proposal 2021 | title          = Multiplayer Improvements | sponsor        = MariuszXC | supporters     = MariuszXC | summary        = Improving ground-referenced...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hackathon Proposal 2021&lt;br /&gt;
| title          = Multiplayer Improvements&lt;br /&gt;
| sponsor        = MariuszXC&lt;br /&gt;
| supporters     = MariuszXC&lt;br /&gt;
| summary        = Improving ground-referenced presentation of remote players' planes&lt;br /&gt;
| background     = forum topic https://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=39846&lt;br /&gt;
| details        = Due to scenery differences some aircraft are shown partially sunk or floating, even when their GND flag is true. &lt;br /&gt;
| skills         = Nasal&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>MariuszXC</name></author>
	</entry>
</feed>