Kill RotatedContentBuffer

RESOLVED FIXED in Firefox 58

Status

()

defect
RESOLVED FIXED
2 years ago
2 years ago

People

(Reporter: rhunt, Assigned: rhunt)

Tracking

unspecified
mozilla58
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox57 unaffected, firefox58 fixed)

Details

(Whiteboard: [gfx-noted])

Attachments

(23 attachments)

59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
dvander
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
nical
: review+
Details
59 bytes, text/x-review-board-request
Details
Maybe a click bait title, but this is about moving RotatedContentBuffer's functionality. Not moving to tiling necessarily.

RotatedContentBuffer is inherited by ContentClientRemote and ContentClientBasic and used to implement the ContentClient interface.

This works okay, but gets much more complicated when it comes to double buffering with ContentClientDoubleBuffered, as the RotatedContentBuffer is implicitly the back buffer, while instance members make up the front buffer.

I think it makes sense to instead compose ContentClient's with a RotatedBuffer, rather than inherit. I have a bunch of patches that do this, and some clean up.

This is useful for moving some content client operations (like buffer copying) off the main thread.
Sorry there are a bunch of patches here. Most of them are small changes.

The end goal of this patch series is to eliminate RotatedContentBuffer and move it's functionality into ContentClient.

ContentClient would then be composed of a RotatedBuffer, and do most of the necessary work of adjusting it and asking for new ones.

The derived classes would be responsible for creating the specific kind of RotatedBuffer.
 * BasicContentClient would create a DrawTargetRotatedBuffer (backed by draw targets)
 * ContentClientRemoteBuffer would create a RemoteRotatedBuffer (backed by texture clients)
 * ContentClientDoubleBuffer would have an additional RemoteRotatedBuffer for the front buffer

Most of the decision making code of RotatedContentBuffer will be moved to ContentClient, while most of the buffer updating and adjustment will become instance methods of RotatedBuffer.

https://treeherder.mozilla.org/#/jobs?repo=try&revision=73862463092cee689919378cb6fc115907c82978

The try run looks green, and I haven't noticed any significant regression when using these patches.

I'm still afraid I missed an edge case with buffer creation failures, because the code was quite tangled up and confusing. But I think this new code is more straightforward which should help it be more robust in the long run.
Comment on attachment 8920203 [details]
Remove ContentClientRemote. (bug 1409871 part 1, )

https://reviewboard.mozilla.org/r/191170/#review196390
Attachment #8920203 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920206 [details]
Add a RemoteRotatedBuffer. (bug 1409871 part 4, )

https://reviewboard.mozilla.org/r/191176/#review196394


C/C++ static analysis found 1 defect in this patch.

You can run this analysis locally with: `./mach static-analysis check path/to/file.cpp`

If you see a problem in this automated review, please report it here: http://bit.ly/2y9N9Vx


::: gfx/layers/RotatedBuffer.cpp:404
(Diff revision 1)
> +already_AddRefed<gfx::SourceSurface>
> +RemoteRotatedBuffer::GetSourceSurface(ContextSource aSource) const
> +{
> +  if (aSource == ContextSource::BUFFER_BLACK) {
> +    return mTarget->Snapshot();
> +  } else {

Warning: Do not use 'else' after 'return' [clang-tidy: readability-else-after-return]
Comment on attachment 8920208 [details]
Add a DrawTargetRotatedBuffer. (bug 1409871 part 6, )

https://reviewboard.mozilla.org/r/191180/#review196396


C/C++ static analysis found 1 defect in this patch.

You can run this analysis locally with: `./mach static-analysis check path/to/file.cpp`

If you see a problem in this automated review, please report it here: http://bit.ly/2y9N9Vx


::: gfx/layers/RotatedBuffer.cpp:435
(Diff revision 1)
> +already_AddRefed<gfx::SourceSurface>
> +DrawTargetRotatedBuffer::GetSourceSurface(ContextSource aSource) const
> +{
> +  if (aSource == ContextSource::BUFFER_BLACK) {
> +    return mTarget->Snapshot();
> +  } else {

Warning: Do not use 'else' after 'return' [clang-tidy: readability-else-after-return]
Comment on attachment 8920204 [details]
Move UpdateDestinationFrom to RotatedBuffer. (bug 1409871 part 2, )

https://reviewboard.mozilla.org/r/191172/#review196398
Attachment #8920204 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920205 [details]
Move DrawTo to RotatedBuffer. (bug 1409871 part 3, )

https://reviewboard.mozilla.org/r/191174/#review196400
Attachment #8920205 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920206 [details]
Add a RemoteRotatedBuffer. (bug 1409871 part 4, )

https://reviewboard.mozilla.org/r/191176/#review196402

There are some bits of useful information in the commit messages that would be worth adding to the class documentations (maybe as a followup). Especially when it comes to compositables and rotated buffers, having a small one-sentence explainer about what each class is about in the code is nice.
Attachment #8920206 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920207 [details]
Use a RemoteRotatedBuffer for the front buffer of ContentClientDoubleBuffered. (bug 1409871 part 5, )

https://reviewboard.mozilla.org/r/191178/#review196410
Attachment #8920207 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920208 [details]
Add a DrawTargetRotatedBuffer. (bug 1409871 part 6, )

https://reviewboard.mozilla.org/r/191180/#review196414
Attachment #8920208 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920209 [details]
Refactor copying from the old buffer to the new buffer to use RotatedBuffer. (bug 1409871 part 7, )

https://reviewboard.mozilla.org/r/191182/#review196418

::: gfx/layers/RotatedBuffer.cpp:835
(Diff revision 1)
> -  // If we have no buffered data already, then destBuffer will be a fresh buffer
> +  // If needed, copy the old buffer over to the new one
> -  // and we do not need to clear it below.
> -  bool isClear = !HaveBuffer();
> -
>    if (destDTBuffer) {
> -    if (!isClear && (mode != SurfaceMode::SURFACE_COMPONENT_ALPHA || HaveBufferOnWhite())) {
> +    if ((HaveBuffer() && EnsureBuffer()) &&

I am a bit confused by this. Did you mean `HaveBuffer() || EnsureBuffer()`?

I'd expect the latter to not do much interesting stuff when the former returns true.

Same thing with the "on white" variant on the line below.
Comment on attachment 8920209 [details]
Refactor copying from the old buffer to the new buffer to use RotatedBuffer. (bug 1409871 part 7, )

https://reviewboard.mozilla.org/r/191182/#review196418

> I am a bit confused by this. Did you mean `HaveBuffer() || EnsureBuffer()`?
> 
> I'd expect the latter to not do much interesting stuff when the former returns true.
> 
> Same thing with the "on white" variant on the line below.

The intent behind that line is to say if we (have a texture client) && (ensure the draw target from it is mapped).

HaveBuffer() will return true even if the texture client isn't mapped, so EnsureBuffer() is also necessary.

This is confusing though, and part of the reason these patches kill EnsureBuffer(). This if statement is simplified later.
Comment on attachment 8920218 [details]
Fix PrepareDrawTargetForPainting (bug 1409871 part 16, )

https://reviewboard.mozilla.org/r/191200/#review196456
Attachment #8920218 - Flags: review?(dvander) → review+
Comment on attachment 8920209 [details]
Refactor copying from the old buffer to the new buffer to use RotatedBuffer. (bug 1409871 part 7, )

https://reviewboard.mozilla.org/r/191182/#review196676

::: gfx/layers/RotatedBuffer.cpp:838
(Diff revision 1)
> -
>    if (destDTBuffer) {
> -    if (!isClear && (mode != SurfaceMode::SURFACE_COMPONENT_ALPHA || HaveBufferOnWhite())) {
> -      // Copy the bits
> -      IntPoint offset = -destBufferRect.TopLeft();
> -      Matrix mat = Matrix::Translation(offset.x, offset.y);
> +    if ((HaveBuffer() && EnsureBuffer()) &&
> +        (mode != SurfaceMode::SURFACE_COMPONENT_ALPHA || (HaveBufferOnWhite() && EnsureBufferOnWhite()))) {
> +      DrawTargetRotatedBuffer oldBuffer = DrawTargetRotatedBuffer(mDTBuffer, mDTBufferOnWhite,
> +                                                                  mBufferRect, mBufferRotation);

There was some code here to account for the offset between the current and previous buffer rects, and I don't see where this is accounted for in this patch.

How does it work when the buffer rect has moved?
Comment on attachment 8920210 [details]
Move mFrontAndBackBufferDiffer to ContentClientDoubleBuffered. (bug 1409871 part 8, )

https://reviewboard.mozilla.org/r/191184/#review196696
Attachment #8920210 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920211 [details]
Remove PaintState::mDidSelfCopy. (bug 1409871 part 9, )

https://reviewboard.mozilla.org/r/191186/#review196698
Attachment #8920211 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920212 [details]
Add RotatedBuffer::AdjustTo. (bug 1409871 part 10, )

https://reviewboard.mozilla.org/r/191188/#review196714
Attachment #8920212 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920213 [details]
Move buffer related decisions into their own function. (bug 1409871 part 11, )

https://reviewboard.mozilla.org/r/191190/#review196718

Nice
Attachment #8920213 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920214 [details]
Kill RotatedContentBuffer (bug 1409871 part 12, )

https://reviewboard.mozilla.org/r/191192/#review196738
Attachment #8920214 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920215 [details]
Update comments for ContentClient (bug 1409871 part 13, )

https://reviewboard.mozilla.org/r/191194/#review196748

Nice!
Attachment #8920215 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920216 [details]
Cleanup rotated buffer declarations and add some documentation. (bug 1409871 part 14, )

https://reviewboard.mozilla.org/r/191196/#review196752
Attachment #8920216 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920217 [details]
Use a rect instead of a region for UpdateDestinationFrom (bug 1409871 part 15, )

https://reviewboard.mozilla.org/r/191198/#review196756
Attachment #8920217 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920209 [details]
Refactor copying from the old buffer to the new buffer to use RotatedBuffer. (bug 1409871 part 7, )

https://reviewboard.mozilla.org/r/191182/#review196676

> There was some code here to account for the offset between the current and previous buffer rects, and I don't see where this is accounted for in this patch.
> 
> How does it work when the buffer rect has moved?

The offset will come from the BorrowDrawTargetForQuadrantUpdate in UpdateDestinationFrom. destBufferRect becomes mBufferRect in this patch, and a transform is calculated from that using GetQuadrantRectangle.

Essentially the code before this patch was doing a special case of UpdateDestinationFrom, where the rotated buffer being copied into had rotation == (0,0).

This new path should still have the same performance characteristics, but allow us to drop some lines of code. Actually now that I look at it, there might be an unneeded draw target flush that happens. I'll look into that.
Comment on attachment 8920219 [details]
Clean up some methods on ContentClient (bug 1409871 part 17, )

https://reviewboard.mozilla.org/r/191202/#review196778
Attachment #8920219 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920220 [details]
Remove BeginPaintBuffer (bug 1409871 part 18, )

https://reviewboard.mozilla.org/r/191204/#review196780
Attachment #8920220 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920221 [details]
Remove mInAsyncPaint and move locking new back buffer into BeginPaint (bug 1409871 part 19, )

https://reviewboard.mozilla.org/r/191206/#review196782
Attachment #8920221 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920209 [details]
Refactor copying from the old buffer to the new buffer to use RotatedBuffer. (bug 1409871 part 7, )

https://reviewboard.mozilla.org/r/191182/#review196784
Attachment #8920209 - Flags: review?(nical.bugzilla) → review+
Thanks a lot for sorting out the terrible mess that buffer rotation grew into!
Comment on attachment 8920206 [details]
Add a RemoteRotatedBuffer. (bug 1409871 part 4, )

https://reviewboard.mozilla.org/r/191176/#review196942


C/C++ static analysis found 1 defect in this patch.

You can run this analysis locally with: `./mach static-analysis check path/to/file.cpp`

If you see a problem in this automated review, please report it here: http://bit.ly/2y9N9Vx


::: gfx/layers/RotatedBuffer.cpp:404
(Diff revision 2)
> +already_AddRefed<gfx::SourceSurface>
> +RemoteRotatedBuffer::GetSourceSurface(ContextSource aSource) const
> +{
> +  if (aSource == ContextSource::BUFFER_BLACK) {
> +    return mTarget->Snapshot();
> +  } else {

Warning: Do not use 'else' after 'return' [clang-tidy: readability-else-after-return]
Comment on attachment 8920208 [details]
Add a DrawTargetRotatedBuffer. (bug 1409871 part 6, )

https://reviewboard.mozilla.org/r/191180/#review196946


C/C++ static analysis found 1 defect in this patch.

You can run this analysis locally with: `./mach static-analysis check path/to/file.cpp`

If you see a problem in this automated review, please report it here: http://bit.ly/2y9N9Vx


::: gfx/layers/RotatedBuffer.cpp:435
(Diff revision 2)
> +already_AddRefed<gfx::SourceSurface>
> +DrawTargetRotatedBuffer::GetSourceSurface(ContextSource aSource) const
> +{
> +  if (aSource == ContextSource::BUFFER_BLACK) {
> +    return mTarget->Snapshot();
> +  } else {

Warning: Do not use 'else' after 'return' [clang-tidy: readability-else-after-return]
Comment on attachment 8920713 [details]
Be sure to unlock the old back buffer before we release it. (bug 1409871 part 20, )

https://reviewboard.mozilla.org/r/191716/#review197122
Attachment #8920713 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920714 [details]
Add documentation for the new rotated buffer subclasses. (bug 1409871 part 21, )

https://reviewboard.mozilla.org/r/191718/#review197124
Attachment #8920714 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8920715 [details]
Mark SourceRotatedBuffer methods as override to silence warnings (bug 1409871 part 22, )

https://reviewboard.mozilla.org/r/191720/#review197126
Attachment #8920715 - Flags: review?(nical.bugzilla) → review+
Pushed by rhunt@eqrion.net:
https://hg.mozilla.org/integration/mozilla-inbound/rev/45596e6d2e2f
Remove ContentClientRemote. (bug 1409871 part 1, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/0c763c30594d
Move UpdateDestinationFrom to RotatedBuffer. (bug 1409871 part 2, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/a9f8832adcb4
Move DrawTo to RotatedBuffer. (bug 1409871 part 3, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/940f2c9adec7
Add a RemoteRotatedBuffer. (bug 1409871 part 4, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/92d59687d486
Use a RemoteRotatedBuffer for the front buffer of ContentClientDoubleBuffered. (bug 1409871 part 5, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/d3d5d723a5df
Add a DrawTargetRotatedBuffer. (bug 1409871 part 6, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/9392889a01d0
Refactor copying from the old buffer to the new buffer to use RotatedBuffer. (bug 1409871 part 7, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/d57058c8c12e
Move mFrontAndBackBufferDiffer to ContentClientDoubleBuffered. (bug 1409871 part 8, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/cce97a15c945
Remove PaintState::mDidSelfCopy. (bug 1409871 part 9, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/0c1485b37ae9
Add RotatedBuffer::AdjustTo. (bug 1409871 part 10, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/ad4b3448dc2e
Move buffer related decisions into their own function. (bug 1409871 part 11, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/7b7bcdf87539
Kill RotatedContentBuffer (bug 1409871 part 12, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/2d9d7435eb63
Update comments for ContentClient (bug 1409871 part 13, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/c57db572271d
Cleanup rotated buffer declarations and add some documentation. (bug 1409871 part 14, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/482309a25d13
Use a rect instead of a region for UpdateDestinationFrom (bug 1409871 part 15, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/7e2fc94f5be9
Fix PrepareDrawTargetForPainting (bug 1409871 part 16, r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/466f20f34a13
Clean up some methods on ContentClient (bug 1409871 part 17, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/352a6f520d27
Remove BeginPaintBuffer (bug 1409871 part 18, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/56fe4c3c3b04
Remove mInAsyncPaint and move locking new back buffer into BeginPaint (bug 1409871 part 19, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/a4e35be8cf4c
Be sure to unlock the old back buffer before we release it. (bug 1409871 part 20, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/f68539cff202
Add documentation for the new rotated buffer subclasses. (bug 1409871 part 21, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/cd5691720816
Mark SourceRotatedBuffer methods as override to silence warnings (bug 1409871 part 22, r=nical)
Blocks: 1410919
I'm taking a stab that this might be the cause of a problem I'm seeing using inbound build.  Context menus, bookmark menus are all black.  Icons on my toolbar are fine.
(In reply to Gary [:streetwolf] from comment #76)
> I'm taking a stab that this might be the cause of a problem I'm seeing using
> inbound build.  Context menus, bookmark menus are all black.  Icons on my
> toolbar are fine.

It could be. Do you see any graphics related messages in stderr? Like "Failed 1 buffer for .." or "Failed to lock new back buffer", etc?
Flags: needinfo?(garyshap)
(In reply to Ryan Hunt [:rhunt] from comment #77)
> (In reply to Gary [:streetwolf] from comment #76)
> > I'm taking a stab that this might be the cause of a problem I'm seeing using
> > inbound build.  Context menus, bookmark menus are all black.  Icons on my
> > toolbar are fine.
> 
> It could be. Do you see any graphics related messages in stderr? Like
> "Failed 1 buffer for .." or "Failed to lock new back buffer", etc?

Also if this is only on a specific platform and any about:support information would be appreciated.
Application Basics
------------------

Name: Firefox
Version: 58.0a1
Build ID: 20171023172735
Update Channel: default
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0
OS: Windows_NT 10.0
Multiprocess Windows: 1/1 (Enabled by default)
Web Content Processes: 3/4
Stylo: true (enabled by default)
Google Key: Found
Mozilla Location Service Key: Found
Safe Mode: false

Crash Reports for the Last 3 Days
---------------------------------

All Crash Reports

Nightly Features
----------------

Name: Activity Stream
Version: 2017.10.13.1281-6245c446
ID: activity-stream@mozilla.org

Name: Application Update Service Helper
Version: 2.0
ID: aushelper@mozilla.org

Name: Firefox Screenshots
Version: 19.2.0
ID: screenshots@mozilla.org

Name: FlyWeb
Version: 1.0.0
ID: flyweb@mozilla.org

Name: Follow-on Search Telemetry
Version: 0.9.5
ID: followonsearch@mozilla.com

Name: Form Autofill
Version: 1.0
ID: formautofill@mozilla.org

Name: Photon onboarding
Version: 1.0
ID: onboarding@mozilla.org

Name: Pocket
Version: 1.0.5
ID: firefox@getpocket.com

Name: Presentation
Version: 1.0.0
ID: presentation@mozilla.org

Name: Shield Recipe Client
Version: 76
ID: shield-recipe-client@mozilla.org

Name: Web Compat
Version: 1.1
ID: webcompat@mozilla.org

Name: WebCompat Reporter
Version: 1.0.0
ID: webcompat-reporter@mozilla.org

Extensions
----------

Name: AutoplayStopper
Version: 1.2.0
Enabled: true
ID: autoplaystopper@byo.co.il

Name: bitwarden - Free Password Manager
Version: 1.19.1
Enabled: true
ID: {446900e4-71c2-419f-a6a7-df9c091e268b}

Name: Copy Current Page URL with Anchor
Version: 1.0
Enabled: true
ID: jid1-grAPHQfoBoWMdA@jetpack

Name: Copy PlainText
Version: 1.5
Enabled: true
ID: copyplaintext@eros.man

Name: Copy URL To Clipboard
Version: 0.17.0
Enabled: true
ID: url2clipboard@asamuzak.jp

Name: DragLinks
Version: 1.8
Enabled: true
ID: sp33dk0r3@gmail.com

Name: Enhancer for YouTube™
Version: 2.0.45
Enabled: true
ID: enhancerforyoutube@maximerf.addons.mozilla.org

Name: Font Finder
Version: 0.1.8
Enabled: true
ID: {a658a273-612e-489e-b4f1-5344e672f4f5}

Name: History AutoDelete
Version: 2.0.2
Enabled: true
ID: {7e79d10d-9667-4d38-838d-471281c568c3}

Name: Simple Form Fill
Version: 2.1.4
Enabled: true
ID: simpleformfill@sblask

Name: Textarea Cache Lite
Version: 2.5.0
Enabled: true
ID: textarea-cache-lite@wildsky.cc

Name: uBlock Origin
Version: 1.14.17b2
Enabled: true
ID: uBlock0@raymondhill.net

Name: Violentmonkey
Version: 2.8.13
Enabled: true
ID: {aecec67f-0d10-4fa7-b7c7-609a2db280cf}

Name: Zoom Page WE
Version: 6.4
Enabled: true
ID: zoompage-we@DW-dev

Graphics
--------

Features
Compositing: Direct3D 11 (Advanced Layers)
Asynchronous Pan/Zoom: wheel input enabled; scrollbar drag enabled; keyboard enabled; autoscroll enabled
WebGL 1 Driver WSI Info: EGL_VENDOR: Google Inc. (adapter LUID: 000000000000889b) EGL_VERSION: 1.4 (ANGLE 2.1.0.db3422764a9b) EGL_EXTENSIONS: EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_d3d_texture_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_ANGLE_direct_composition EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_stream_producer_d3d_texture_nv12 EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_CHROMIUM_sync_control EGL_EXT_pixel_format_float EGL_KHR_surfaceless_context EGL_ANGLE_display_texture_share_group EGL_ANGLE_create_context_client_arrays EGL_ANGLE_program_cache_control EGL_EXTENSIONS(nullptr): EGL_EXT_client_extensions EGL_EXT_platform_base EGL_EXT_platform_device EGL_ANGLE_platform_angle EGL_ANGLE_platform_angle_d3d EGL_ANGLE_device_creation EGL_ANGLE_device_creation_d3d11 EGL_ANGLE_experimental_present_path EGL_KHR_client_get_all_proc_addresses EGL_ANGLE_display_robust_resource_initialization
WebGL 1 Driver Renderer: Google Inc. -- ANGLE (AMD Radeon (TM) R9 390 Series Direct3D11 vs_5_0 ps_5_0)
WebGL 1 Driver Version: OpenGL ES 2.0 (ANGLE 2.1.0.db3422764a9b)
WebGL 1 Driver Extensions: GL_ANGLE_client_arrays GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_lossy_etc_decode GL_ANGLE_pack_reverse_row_order GL_ANGLE_program_cache_control GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_robust_resource_initialization GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_color_buffer_float_rgb GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_sync_query GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_frag_depth GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc_srgb GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_storage GL_EXT_unpack_subimage GL_KHR_debug GL_NV_EGL_stream_consumer_external GL_NV_fence GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth32 GL_OES_element_index_uint GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object
WebGL 1 Extensions: ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_frag_depth EXT_sRGB EXT_shader_texture_lod EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context
WebGL 2 Driver WSI Info: EGL_VENDOR: Google Inc. (adapter LUID: 000000000000889b) EGL_VERSION: 1.4 (ANGLE 2.1.0.db3422764a9b) EGL_EXTENSIONS: EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_d3d_texture_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_ANGLE_direct_composition EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_stream_producer_d3d_texture_nv12 EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_CHROMIUM_sync_control EGL_EXT_pixel_format_float EGL_KHR_surfaceless_context EGL_ANGLE_display_texture_share_group EGL_ANGLE_create_context_client_arrays EGL_ANGLE_program_cache_control EGL_EXTENSIONS(nullptr): EGL_EXT_client_extensions EGL_EXT_platform_base EGL_EXT_platform_device EGL_ANGLE_platform_angle EGL_ANGLE_platform_angle_d3d EGL_ANGLE_device_creation EGL_ANGLE_device_creation_d3d11 EGL_ANGLE_experimental_present_path EGL_KHR_client_get_all_proc_addresses EGL_ANGLE_display_robust_resource_initialization
WebGL 2 Driver Renderer: Google Inc. -- ANGLE (AMD Radeon (TM) R9 390 Series Direct3D11 vs_5_0 ps_5_0)
WebGL 2 Driver Version: OpenGL ES 3.0 (ANGLE 2.1.0.db3422764a9b)
WebGL 2 Driver Extensions: GL_ANGLE_client_arrays GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_lossy_etc_decode GL_ANGLE_multiview GL_ANGLE_pack_reverse_row_order GL_ANGLE_program_cache_control GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_robust_resource_initialization GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_color_buffer_float_rgb GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_sync_query GL_EXT_blend_minmax GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_frag_depth GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc_srgb GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_norm16 GL_EXT_texture_rg GL_EXT_texture_storage GL_EXT_unpack_subimage GL_KHR_debug GL_NV_EGL_stream_consumer_external GL_NV_fence GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth32 GL_OES_element_index_uint GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object
WebGL 2 Extensions: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_texture_float_linear WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context
Direct2D: true
Off Main Thread Painting Enabled: true
DirectWrite: true (10.0.16299.15)
GPU #1
Active: Yes
Description: AMD Radeon (TM) R9 390 Series
Vendor ID: 0x1002
Device ID: 0x67b1
Driver Version: 22.19.685.0
Driver Date: 10-5-2017
Drivers: aticfx64 aticfx64 aticfx64 amdxc64 aticfx32 aticfx32 aticfx32 amdxc32 atiumd64 atidxx64 atidxx64 atiumdag atidxx32 atidxx32 atiumdva atiumd6a atitmm64
Subsys ID: 00000000
RAM: 8192

Diagnostics
ClearType Parameters: DISPLAY1 [ Gamma: 2.2 Pixel Structure: BGR ClearType Level: 0 Enhanced Contrast: 100 ] DISPLAY2 [ Gamma: 2.2 Pixel Structure: BGR ClearType Level: 0 Enhanced Contrast: 100 ]
AzureCanvasAccelerated: 0
AzureCanvasBackend: Direct2D 1.1
AzureCanvasBackend (UI Process): skia
AzureContentBackend: Direct2D 1.1
AzureContentBackend (UI Process): skia
AzureFallbackCanvasBackend (UI Process): cairo
GPUProcessPid: 2484
GPUProcess: Terminate GPU Process
Device Reset: Trigger Device Reset
ClearType Parameters: DISPLAY1 [ Gamma: 2.2 Pixel Structure: BGR ClearType Level: 0 Enhanced Contrast: 100 ] DISPLAY2 [ Gamma: 2.2 Pixel Structure: BGR ClearType Level: 0 Enhanced Contrast: 100 ]
Decision Log
WEBRENDER:
opt-in by default: WebRender is an opt-in feature




Media
-----

Audio Backend: wasapi
Max Channels: 2
Preferred Channel Layout: stereo
Preferred Sample Rate: 48000
Output Devices
Name: Group
1 - Digital Display Audio (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
Realtek Digital Output(Optical) (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
4 - Digital Display Audio (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
5 - Digital Display Audio (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
Realtek Digital Output (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
6 - Digital Display Audio (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
2 - Digital Display Audio (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
1 - PA249 (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
2 - PA249 (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
Speakers (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
3 - Digital Display Audio (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
Input Devices
Name: Group
Side (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Internal AUX Jack (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
Microphone (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Rear (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Line In (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Front Pink In (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Internal AUX Jack (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
Front Green In (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Microphone (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Center (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Internal AUX Jack (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
Internal AUX Jack (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
Internal AUX Jack (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001
Line In (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Front (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Subwoofer (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Stereo Mix (Realtek High Definition Audio): HDAUDIO\FUNC_01&VEN_10EC&DEV_0899&SUBSYS_104384D8&REV_1000\4&1c1dba83&0&0001
Internal AUX Jack (AMD High Definition Audio Device): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1005\5&19f3657&10&0001

Important Modified Preferences
------------------------------

accessibility.typeaheadfind: true
accessibility.typeaheadfind.flashBar: 0
browser.cache.disk.capacity: 358400
browser.cache.disk.filesystem_reported: 1
browser.cache.disk.hashstats_reported: 1
browser.cache.disk.parent_directory: D:\
browser.cache.disk.smart_size.first_run: false
browser.cache.disk.smart_size.use_old_max: false
browser.cache.frecency_experiment: 4
browser.display.document_color_use: 1
browser.display.show_image_placeholders: false
browser.download.folderList: 2
browser.download.manager.addToRecentDocs: false
browser.places.smartBookmarksVersion: 8
browser.search.useDBForOrder: true
browser.sessionstore.upgradeBackup.latestBuildID: 20171023172735
browser.startup.homepage_override.buildID: 20171023172735
browser.startup.homepage_override.mstone: 58.0a1
browser.tabs.closeWindowWithLastTab: false
browser.tabs.crashReporting.includeURL: true
browser.tabs.loadInBackground: false
browser.tabs.showAudioPlayingIcon: false
browser.tabs.warnOnClose: false
browser.tabs.warnOnCloseOtherTabs: false
browser.urlbar.clickSelectsAll: false
browser.urlbar.doubleClickSelectsAll: true
browser.urlbar.lastSuggestionsPromptDate: 20170704
browser.urlbar.oneOffSearches: false
browser.urlbar.searchSuggestionsChoice: true
browser.urlbar.suggest.bookmark: false
browser.urlbar.suggest.openpage: false
browser.urlbar.timesBeforeHidingSuggestionsHint: 0
browser.urlbar.usepreloadedtopurls.enabled: false
dom.forms.autocomplete.formautofill: true
dom.forms.datetime.others: true
dom.forms.datetime.timepicker: true
dom.payments.request.enabled: true
dom.push.userAgentID: de9775eea42f4a8abe60f13e22c33f76
dom.webcomponents.customelements.enabled: true
dom.webcomponents.enabled: true
extensions.lastAppVersion: 58.0a1
font.internaluseonly.changed: false
font.name.monospace.x-western: Consolas
font.name.sans-serif.x-western: Liberation Sans
font.name.serif.x-western: Liberation Serif
font.size.fixed.x-western: 14
javascript.options.streams: true
layers.mlgpu.sanity-test-failed: false
media.benchmark.vp9.fps: 351
media.benchmark.vp9.versioncheck: 2
media.gmp-gmpopenh264.abi: x86_64-msvc-x64
media.gmp-gmpopenh264.enabled: true
media.gmp-gmpopenh264.lastUpdate: 1508517711
media.gmp-gmpopenh264.version: 1.7.1
media.gmp-manager.buildID: 20171023172735
media.gmp-manager.lastCheck: 1508789299
media.gmp-widevinecdm.abi: x86_64-msvc-x64
media.gmp-widevinecdm.lastUpdate: 1504646229
media.gmp-widevinecdm.version: 1.4.8.1008
media.gmp.storage.version.observed: 1
media.hardware-video-decoding.failed: false
media.peerconnection.ice.proxy_only: true
media.webrtc.debug.log_file: C:\Users\garys\AppData\Local\Temp\WebRTC.log
mousewheel.acceleration.start: 2
network.cookie.lifetime.days: 9999
network.cookie.prefsMigrated: true
network.predictor.cleaned-up: true
places.database.lastMaintenance: 1508764923
places.history.expiration.transient_current_max_pages: 104858
plugin.disable_full_page_plugin_for_types: application/pdf
print.printer_Brother_MFC-J475DW_Printer.print_bgcolor: false
print.printer_Brother_MFC-J475DW_Printer.print_bgimages: false
print.printer_Brother_MFC-J475DW_Printer.print_duplex: -437918235
print.printer_Brother_MFC-J475DW_Printer.print_edge_bottom: 0
print.printer_Brother_MFC-J475DW_Printer.print_edge_left: 0
print.printer_Brother_MFC-J475DW_Printer.print_edge_right: 0
print.printer_Brother_MFC-J475DW_Printer.print_edge_top: 0
print.printer_Brother_MFC-J475DW_Printer.print_evenpages: true
print.printer_Brother_MFC-J475DW_Printer.print_footercenter:
print.printer_Brother_MFC-J475DW_Printer.print_footerleft: &PT
print.printer_Brother_MFC-J475DW_Printer.print_footerright: &D
print.printer_Brother_MFC-J475DW_Printer.print_headercenter:
print.printer_Brother_MFC-J475DW_Printer.print_headerleft: &T
print.printer_Brother_MFC-J475DW_Printer.print_headerright: &U
print.printer_Brother_MFC-J475DW_Printer.print_in_color: true
print.printer_Brother_MFC-J475DW_Printer.print_margin_bottom: 0
print.printer_Brother_MFC-J475DW_Printer.print_margin_left: 0
print.printer_Brother_MFC-J475DW_Printer.print_margin_right: 0
print.printer_Brother_MFC-J475DW_Printer.print_margin_top: 0
print.printer_Brother_MFC-J475DW_Printer.print_oddpages: true
print.printer_Brother_MFC-J475DW_Printer.print_orientation: 0
print.printer_Brother_MFC-J475DW_Printer.print_page_delay: 50
print.printer_Brother_MFC-J475DW_Printer.print_paper_data: 256
print.printer_Brother_MFC-J475DW_Printer.print_paper_height: 11.00
print.printer_Brother_MFC-J475DW_Printer.print_paper_name:
print.printer_Brother_MFC-J475DW_Printer.print_paper_size_unit: 0
print.printer_Brother_MFC-J475DW_Printer.print_paper_width: 8.50
print.printer_Brother_MFC-J475DW_Printer.print_resolution: 600
print.printer_Brother_MFC-J475DW_Printer.print_reversed: false
print.printer_Brother_MFC-J475DW_Printer.print_scaling: 1.00
print.printer_Brother_MFC-J475DW_Printer.print_shrink_to_fit: true
print.printer_Brother_MFC-J475DW_Printer.print_to_file: false
print.printer_Brother_MFC-J475DW_Printer.print_unwriteable_margin_bottom: 0
print.printer_Brother_MFC-J475DW_Printer.print_unwriteable_margin_left: 0
print.printer_Brother_MFC-J475DW_Printer.print_unwriteable_margin_right: 0
print.printer_Brother_MFC-J475DW_Printer.print_unwriteable_margin_top: 0
privacy.history.custom: true
privacy.trackingprotection.introCount: 20
privacy.userContext.enabled: false
security.disable_button.openCertManager: false
security.disable_button.openDeviceManager: false
security.sandbox.content.tempDirSuffix: {45ff45e1-d4c8-45d9-a620-827ef9e22e9a}
security.ssl.errorReporting.automatic: true
services.sync.declinedEngines:
services.sync.engine.addresses.available: true
storage.vacuum.last.index: 1
storage.vacuum.last.places.sqlite: 1507239529
ui.osk.debug.keyboardDisplayReason: IKPOS: Touch screen not found.
ui.osk.enabled: false

Important Locked Preferences
----------------------------

Places Database
---------------

JavaScript
----------

Incremental GC: true

Accessibility
-------------

Activated: false
Prevent Accessibility: 0
Accessible Handler Used: true
Accessibility Instantiator:

Library Versions
----------------

NSPR
Expected minimum version: 4.17
Version in use: 4.17

NSS
Expected minimum version: 3.34 Beta
Version in use: 3.34 Beta

NSSSMIME
Expected minimum version: 3.34 Beta
Version in use: 3.34 Beta

NSSSSL
Expected minimum version: 3.34 Beta
Version in use: 3.34 Beta

NSSUTIL
Expected minimum version: 3.34 Beta
Version in use: 3.34 Beta

Experimental Features
---------------------

Sandbox
-------

Content Process Sandbox Level: 4
Effective Content Process Sandbox Level: 4
Flags: needinfo?(garyshap)
(In reply to Gary [:streetwolf] from comment #79)
> Application Basics
> ------------------
> 
> Name: Firefox
> Version: 58.0a1
> Build ID: 20171023172735
> Update Channel: default
> User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0)
> Gecko/20100101 Firefox/58.0
> OS: Windows_NT 10.0
> Multiprocess Windows: 1/1 (Enabled by default)
> Web Content Processes: 3/4
> Stylo: true (enabled by default)
> Google Key: Found
> Mozilla Location Service Key: Found
> Safe Mode: false
> 

Okay, I can confirm this is a regression from this bug. Checked using the inbound taskcluster windows build with these patches, and the one before it. It should probably be backed out.

I'm not seeing any logging when running the build. Spinning up a local build now to try it out.

Bizarre that it passes try..
(In reply to Ryan Hunt [:rhunt] from comment #80)
> (In reply to Gary [:streetwolf] from comment #79)
> > Application Basics
> > ------------------
> > 
> > Name: Firefox
> > Version: 58.0a1
> > Build ID: 20171023172735
> > Update Channel: default
> > User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0)
> > Gecko/20100101 Firefox/58.0
> > OS: Windows_NT 10.0
> > Multiprocess Windows: 1/1 (Enabled by default)
> > Web Content Processes: 3/4
> > Stylo: true (enabled by default)
> > Google Key: Found
> > Mozilla Location Service Key: Found
> > Safe Mode: false
> > 
> 
> Okay, I can confirm this is a regression from this bug. Checked using the
> inbound taskcluster windows build with these patches, and the one before it.
> It should probably be backed out.
> 
> I'm not seeing any logging when running the build. Spinning up a local build
> now to try it out.
> 
> Bizarre that it passes try..

To confirm, the issue I am seeing locally is context menus that are all black.
Backout by archaeopteryx@coole-files.de:
https://hg.mozilla.org/integration/mozilla-inbound/rev/114b0d1737a1
Backed out changeset cd5691720816 
https://hg.mozilla.org/integration/mozilla-inbound/rev/bdea12d5ac71
Backed out changeset f68539cff202 
https://hg.mozilla.org/integration/mozilla-inbound/rev/df70d1ae7fe8
Backed out changeset a4e35be8cf4c 
https://hg.mozilla.org/integration/mozilla-inbound/rev/9ac96da06ccc
Backed out changeset 56fe4c3c3b04 
https://hg.mozilla.org/integration/mozilla-inbound/rev/20b7caa471d0
Backed out changeset 352a6f520d27 
https://hg.mozilla.org/integration/mozilla-inbound/rev/6fdd1f94b6fe
Backed out changeset 466f20f34a13 
https://hg.mozilla.org/integration/mozilla-inbound/rev/9f1e26435193
Backed out changeset 7e2fc94f5be9 
https://hg.mozilla.org/integration/mozilla-inbound/rev/b502d19c5449
Backed out changeset 482309a25d13 
https://hg.mozilla.org/integration/mozilla-inbound/rev/ce0f2a973009
Backed out changeset c57db572271d 
https://hg.mozilla.org/integration/mozilla-inbound/rev/ec04ffb57414
Backed out changeset 2d9d7435eb63 
https://hg.mozilla.org/integration/mozilla-inbound/rev/4863ac476823
Backed out changeset 7b7bcdf87539 
https://hg.mozilla.org/integration/mozilla-inbound/rev/9611bfdc5b52
Backed out changeset ad4b3448dc2e 
https://hg.mozilla.org/integration/mozilla-inbound/rev/a0100184e6e6
Backed out changeset 0c1485b37ae9 
https://hg.mozilla.org/integration/mozilla-inbound/rev/05bd0c3bafd9
Backed out changeset cce97a15c945 
https://hg.mozilla.org/integration/mozilla-inbound/rev/47dcd67babcc
Backed out changeset d57058c8c12e 
https://hg.mozilla.org/integration/mozilla-inbound/rev/520522d4533b
Backed out changeset 9392889a01d0 
https://hg.mozilla.org/integration/mozilla-inbound/rev/b8194e2c58a4
Backed out changeset d3d5d723a5df 
https://hg.mozilla.org/integration/mozilla-inbound/rev/f0c68ac62037
Backed out changeset 92d59687d486 
https://hg.mozilla.org/integration/mozilla-inbound/rev/e37f344a70af
Backed out changeset 940f2c9adec7 
https://hg.mozilla.org/integration/mozilla-inbound/rev/984b2f32a4be
Backed out changeset a9f8832adcb4 
https://hg.mozilla.org/integration/mozilla-inbound/rev/d1d2ff6b869d
Backed out changeset 0c763c30594d 
https://hg.mozilla.org/integration/mozilla-inbound/rev/57328c946b28
Backed out changeset 45596e6d2e2f on request from rhunt for causing black context menus on Windows. r=backout
The problem was caused from the merging of RotatedContentBuffer and ContentClientBasic. 

ContentClientBasic overrode BorrowDrawTargetForRecording from ContentClient to mark that it couldn't support OMTP, and RotatedContentBuffer would call it's BorrowDrawTargetForRecording for BorrowDrawTargetForPainting.

When the classes merged this switched to ContentClient::BorrowDrawTargetForPainting calling ContentClientBasic::BorrowDrawTargetForRecording which would always be null.

There was also an issue with DrawTargetRotatedBuffer::IsLocked that is detailed in the new commit.
Flags: needinfo?(rhunt)
Comment on attachment 8920206 [details]
Add a RemoteRotatedBuffer. (bug 1409871 part 4, )

https://reviewboard.mozilla.org/r/191176/#review197680


C/C++ static analysis found 1 defect in this patch.

You can run this analysis locally with: `./mach static-analysis check path/to/file.cpp`

If you see a problem in this automated review, please report it here: http://bit.ly/2y9N9Vx


::: gfx/layers/RotatedBuffer.cpp:404
(Diff revision 2)
> +already_AddRefed<gfx::SourceSurface>
> +RemoteRotatedBuffer::GetSourceSurface(ContextSource aSource) const
> +{
> +  if (aSource == ContextSource::BUFFER_BLACK) {
> +    return mTarget->Snapshot();
> +  } else {

Warning: Do not use 'else' after 'return' [clang-tidy: readability-else-after-return]
Comment on attachment 8920208 [details]
Add a DrawTargetRotatedBuffer. (bug 1409871 part 6, )

https://reviewboard.mozilla.org/r/191180/#review197684


C/C++ static analysis found 1 defect in this patch.

You can run this analysis locally with: `./mach static-analysis check path/to/file.cpp`

If you see a problem in this automated review, please report it here: http://bit.ly/2y9N9Vx


::: gfx/layers/RotatedBuffer.cpp:435
(Diff revision 2)
> +already_AddRefed<gfx::SourceSurface>
> +DrawTargetRotatedBuffer::GetSourceSurface(ContextSource aSource) const
> +{
> +  if (aSource == ContextSource::BUFFER_BLACK) {
> +    return mTarget->Snapshot();
> +  } else {

Warning: Do not use 'else' after 'return' [clang-tidy: readability-else-after-return]
Attachment #8921483 - Flags: review?(nical.bugzilla) → review?(bas)
Attachment #8921483 - Flags: review?(bas)
Pushed by rhunt@eqrion.net:
https://hg.mozilla.org/integration/mozilla-inbound/rev/b059b0ad0832
Remove ContentClientRemote. (bug 1409871 part 1, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/9339abbff76a
Move UpdateDestinationFrom to RotatedBuffer. (bug 1409871 part 2, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/c4fbe93df8ec
Move DrawTo to RotatedBuffer. (bug 1409871 part 3, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/e54c95c99595
Add a RemoteRotatedBuffer. (bug 1409871 part 4, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/aca4385c2ca4
Use a RemoteRotatedBuffer for the front buffer of ContentClientDoubleBuffered. (bug 1409871 part 5, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/c34a0b48cdd1
Add a DrawTargetRotatedBuffer. (bug 1409871 part 6, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/a73b480ecb96
Refactor copying from the old buffer to the new buffer to use RotatedBuffer. (bug 1409871 part 7, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/75046ddbc410
Move mFrontAndBackBufferDiffer to ContentClientDoubleBuffered. (bug 1409871 part 8, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/e6edd42be5ad
Remove PaintState::mDidSelfCopy. (bug 1409871 part 9, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/f08e2107ff10
Add RotatedBuffer::AdjustTo. (bug 1409871 part 10, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/23d42d7d0c14
Move buffer related decisions into their own function. (bug 1409871 part 11, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/a5b8e769a0ee
Kill RotatedContentBuffer (bug 1409871 part 12, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/ac1b3979eed1
Update comments for ContentClient (bug 1409871 part 13, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/91419a724237
Cleanup rotated buffer declarations and add some documentation. (bug 1409871 part 14, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/b8d4000f8a12
Use a rect instead of a region for UpdateDestinationFrom (bug 1409871 part 15, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/8881c53c3c41
Fix PrepareDrawTargetForPainting (bug 1409871 part 16, r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/b82fd6fff076
Clean up some methods on ContentClient (bug 1409871 part 17, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/bce8d7bd214c
Remove BeginPaintBuffer (bug 1409871 part 18, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/5cd394948144
Remove mInAsyncPaint and move locking new back buffer into BeginPaint (bug 1409871 part 19, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/623e446358df
Be sure to unlock the old back buffer before we release it. (bug 1409871 part 20, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/f5daca396912
Add documentation for the new rotated buffer subclasses. (bug 1409871 part 21, r=nical)
https://hg.mozilla.org/integration/mozilla-inbound/rev/b97eefb07e39
Mark SourceRotatedBuffer methods as override to silence warnings (bug 1409871 part 22, r=nical)
I moved the fix for the virtual method call into the patch that introduced the defect, because it's just a small fixup and I don't think it's worth the review.

I also did a try run with this fix and some experimental ones on top and it looks green.
https://treeherder.mozilla.org/#/jobs?repo=try&author=rhunt@eqrion.net
Depends on: 1412150
Depends on: 1412367
Depends on: 1412663
Depends on: 1413059
Depends on: 1416790
You need to log in before you can comment on or make changes to this bug.