7
edits
(br) |
|||
| (20 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. | |||
Post Adobe Flash version 24, Flash | == Windows == | ||
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%" | ||
|- | |- | ||
! WMODE !! | ! 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 || opaque || not async (in-memory bitmap) | ||
|- | |- | ||
| transparent || | | transparent || transparent || not async (in-memory bitmap) | ||
|} | |} | ||
[1] {{bug|1620461}}<br/> | |||
[2] {{bug|1340276}}, {{bug|1359450}}<br/> | |||
[3] {{bug|1565980}}<br/> | |||
[4] {{bug|1620466}} | |||
= Telemetry Links = | |||
{| class="wikitable" style="width:50%" | {| 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 61: | 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