7
edits
(adding telemetry links) |
|||
| (18 intermediate revisions by 2 users not shown) | |||
| Line 7: | Line 7: | ||
= Current WMODE Handling = | = Current WMODE Handling = | ||
== Linux == | |||
{| class="wikitable" style="width:300px" | {| class="wikitable" style="width:300px" | ||
| Line 24: | Line 24: | ||
|} | |} | ||
== OSX == | |||
Flash always uses a hybrid windowless mode. | |||
== Windows == | |||
{| class="wikitable" style="width: | Windows supports three modes, none of which involve window-backed surfaces: | ||
* '''direct''': Post Adobe Flash version 24, Flash offers a new [https://wiki.mozilla.org/NPAPI:AsyncDrawing async rendering API] developed by Mozilla and Adobe. This mode handles that behavior. If <code>dom.ipc.plugins.allow_dxgi_surface=true</code> (the default) and the DirectX device supports it then hardware accelerated surfaces are used. Otherwise, this mode uses in-memory (unaccelerated) surfaces. | |||
* '''opaque''': This mode always uses unaccelerated surfaces. It is intended for plugins that opaquely cover any HTML elements. | |||
* '''transparent''': This mode always uses unaccelerated surfaces. It is intended to blend with HTML elements. For that reason, this mode is slower than opaque mode. | |||
Some wmode values are rewritten by Firefox to promote certain modes to more performant and stable modes. | |||
When <code>dom.ipc.plugins.forcedirect.enabled=true</code> (the default) [1] and <code>dom.ipc.plugins.asyncdrawing.enabled=true</code> (also the default) we use: | |||
{| class="wikitable" style="width:75%" | |||
|- | |- | ||
! | ! Requested WMODE !! Resulting WMODE !! Rendering Mode (GPU supports acceleration) !! Rendering Mode (GPU does not support acceleration) | ||
|- | |- | ||
| | | window || direct || async (GPU accelerated) || async (in-memory bitmap) [2] | ||
|- | |- | ||
| | | gpu || direct || async (GPU accelerated) || async (in-memory bitmap) [3] | ||
|- | |- | ||
| | | unspecified || direct || async (GPU accelerated) || async (in-memory bitmap) [2] | ||
|- | |- | ||
| | | opaque || opaque || not async (in-memory bitmap) || not async (in-memory bitmap) | ||
|- | |- | ||
| | | transparent || transparent || not async (in-memory bitmap) || not async (in-memory bitmap) | ||
|} | |} | ||
When <code>dom.ipc.plugins.asyncdrawing.enabled=false</code> we use [4]: | |||
{| class="wikitable" style="width:50%" | {| class="wikitable" style="width:50%" | ||
|- | |- | ||
! | ! Requested WMODE !! Resulting WMODE !! Rendering Mode | ||
|- | |||
| window || opaque || not async (in-memory bitmap) | |||
|- | |||
| gpu || opaque || not async (in-memory bitmap) | |||
|- | |- | ||
| unspecified || opaque || not async (in-memory bitmap) | |||
|- | |- | ||
| | | opaque || opaque || not async (in-memory bitmap) | ||
|- | |- | ||
| | | transparent || transparent || not async (in-memory bitmap) | ||
|} | |} | ||
[1] | [1] {{bug|1620461}}<br/> | ||
[2] {{bug|1340276}}, {{bug|1359450}} | [2] {{bug|1340276}}, {{bug|1359450}}<br/> | ||
[3] {{bug|1565980}}<br/> | |||
[4] {{bug|1620466}} | |||
= Telemetry Links = | = Telemetry Links = | ||
{| class="wikitable" style="width:50%" | |||
|- | |||
! Telemetry Value !! Platform !! Type | |||
|- | |||
| 0 || Windows, Linux || child window | |||
|- | |||
| 1 || OSX || NPDrawingModelQuickDraw | |||
|- | |||
| 2 || OSX || NPDrawingModelCoreGraphics | |||
|- | |||
| 3 || OSX || NPDrawingModelOpenGL | |||
|- | |||
| 4 || OSX || NPDrawingModelCoreAnimation | |||
|- | |||
| 5 || OSX || NPDrawingModelInvalidatingCoreAnimation | |||
|- | |||
| 6 || Windows || NPDrawingModelSyncWin | |||
|- | |||
| 7 || Linux || NPDrawingModelSyncX | |||
|- | |||
| 8 || Windows || NPDrawingModelAsyncBitmapSurface | |||
|- | |||
| 9 || Windows || NPDrawingModelAsyncWindowsDXGISurface | |||
|} | |||
[https://mzl.la/2px2SZ5 PLUGIN_DRAWING_MODEL Nightly Evolution] | |||
= Testing = | = Testing = | ||
| Line 69: | Line 109: | ||
To enable: | To enable: | ||
* | * dom.ipc.plugins.asyncdrawing.enabled=true | ||
* dom.ipc.plugins.forcedirect.enabled=true (see {{bug|1620461}}) | |||
* make sure you are running Flash version >= 23 | * make sure you are running Flash version >= 23 | ||
= Main Bug List = | = Main Bug List = | ||
edits