Closed Bug 1407992 Opened 7 years ago Closed 3 years ago

Various win32k type calls made during initialization through gfxWindowsPlatform

Categories

(Core :: Graphics, defect, P1)

All
Windows
defect

Tracking

()

RESOLVED FIXED

People

(Reporter: jimm, Assigned: jimm)

References

(Blocks 1 open bug)

Details

(Whiteboard: [gfx-noted])

00 00000069`2d3fac18 00007ffb`82aa6e2a win32u!NtUserDisplayConfigGetDeviceInfo
01 00000069`2d3fac20 00007ffb`7e36d37c USER32!DisplayConfigGetDeviceInfo+0xa
02 00000069`2d3fac50 00007ffb`7e36c32e dxgi!GetAdapterAndSourceInfo+0x34
03 00000069`2d3fac80 00007ffb`7e36f75d dxgi!SAdapterDesc::SAdapterDesc+0x20a
04 00000069`2d3fb640 00007ffb`7e36f4ef dxgi!CDXGIFactory::SampleAdaptersWorker+0x1b9
05 00000069`2d3fb9c0 00007ffb`7e36fa13 dxgi!CDXGIFactory::SampleAdapters+0xb7
06 00000069`2d3fba30 00007ffb`7e368136 dxgi!CDXGIFactory::Initialize+0x87
07 00000069`2d3fbaa0 00007ffb`7e367ce2 dxgi!CreateDXGIFactoryImpl+0x72
08 00000069`2d3fbad0 00007ffb`7e367c71 dxgi!CreateDXGIFactoryActualImpl1+0x32
09 00000069`2d3fbb10 00007ffb`2d8f79b7 dxgi!CreateDXGIFactory1+0x61
0a 00000069`2d3fbb90 00007ffb`2d8e8865 xul!mozilla::gfx::DeviceManagerDx::GetDXGIAdapter+0x73 [c:\mozilla-source\mozilla-central\gfx\thebes\devicemanagerdx.cpp @ 226]
0b 00000069`2d3fbd20 00007ffb`2d8e8de8 xul!mozilla::gfx::DeviceManagerDx::CreateContentDevice+0x31 [c:\mozilla-source\mozilla-central\gfx\thebes\devicemanagerdx.cpp @ 531]
0c 00000069`2d3fbea0 00007ffb`2d8d3353 xul!mozilla::gfx::DeviceManagerDx::CreateContentDevices+0x34 [c:\mozilla-source\mozilla-central\gfx\thebes\devicemanagerdx.cpp @ 201]
0d 00000069`2d3fbed0 00007ffb`2d8d3925 xul!gfxWindowsPlatform::InitializeD3D11+0x3f [c:\mozilla-source\mozilla-central\gfx\thebes\gfxwindowsplatform.cpp @ 1474]
0e 00000069`2d3fc010 00007ffb`2d8d28c3 xul!gfxWindowsPlatform::InitializeDevices+0xb5 [c:\mozilla-source\mozilla-central\gfx\thebes\gfxwindowsplatform.cpp @ 1440]
0f 00000069`2d3fc080 00007ffb`2d8a3404 xul!gfxWindowsPlatform::InitAcceleration+0xa7 [c:\mozilla-source\mozilla-central\gfx\thebes\gfxwindowsplatform.cpp @ 358]
10 00000069`2d3fc0b0 00007ffb`2d8a489c xul!gfxPlatform::Init+0x6a8 [c:\mozilla-source\mozilla-central\gfx\thebes\gfxplatform.cpp @ 749]
11 00000069`2d3fc340 00007ffb`2f6327b4 xul!gfxPlatform::InitChild+0x28 [c:\mozilla-source\mozilla-central\gfx\thebes\gfxplatform.cpp @ 566]
OS: Unspecified → Windows
Priority: -- → P3
Hardware: Unspecified → All

Lots of calls result from here we'll need to find a solution for - SystemParametersInfoW, NtUserEnumDisplayMonitors, NtUserGetDpiForCurrentProcess, NtUserQueryDisplayConfig, NtUserDisplayConfigGetDeviceInfo, NtUserEnumDisplayDevices, NtUserEnumDisplaySettings

Under xul!gfxPlatform::InitChild -

  1. xul!gfxWindowsPlatform::InitAcceleration
    https://searchfox.org/mozilla-central/rev/3d469329a42644b41e66944d8da22d78d8c0f5ec/gfx/thebes/gfxPlatform.cpp#926
  • only remainig calls are in xul!gfxWindowsPlatform::InitDWriteSupport - activity here related to clear type settings.
  1. xul!gfxPlatform::CreateCMSOutputProfile
    https://searchfox.org/mozilla-central/rev/3d469329a42644b41e66944d8da22d78d8c0f5ec/gfx/thebes/gfxPlatform.cpp#2016
  • win gdi stuff here.

Under xul!gfxPlatform::Init, which apparently gets called outside of InitChild based on the stacks -

  1. xul!gfxWindowsPlatform::CreateOffscreenSurface
    https://searchfox.org/mozilla-central/rev/3d469329a42644b41e66944d8da22d78d8c0f5ec/gfx/thebes/gfxWindowsPlatform.cpp#667

gdi resource related activity here but it looks like this isn't needed and could be snipped out when webrender is enabled.

  1. xul!gfxWindowsPlatform::CreateOffscreenSurface
    https://searchfox.org/mozilla-central/rev/
    3d469329a42644b41e66944d8da22d78d8c0f5ec/gfx/thebes/gfxWindowsPlatform.
    cpp#667

gdi resource related activity here but it looks like this isn't needed and
could be snipped out when webrender is enabled.

Need to investigate the uses here. This creates a 1x1 surface used in a few metrics calculations. Some of these uses are in other process.

https://searchfox.org/mozilla-central/search?q=symbol:_ZN11gfxPlatform22ScreenReferenceSurfaceEv&redirect=false

Assignee: nobody → jmathies
Priority: P3 → P1
  1. xul!gfxWindowsPlatform::CreateOffscreenSurface
    https://searchfox.org/mozilla-central/rev/3d469329a42644b41e66944d8da22d78d8c0f5ec/gfx/thebes/gfxWindowsPlatform.cpp#667

There's two places we consume this in content afaikt -

https://searchfox.org/mozilla-central/rev/3d469329a42644b41e66944d8da22d78d8c0f5ec/gfx/thebes/gfxFont.cpp#3331
https://searchfox.org/mozilla-central/rev/3d469329a42644b41e66944d8da22d78d8c0f5ec/layout/svg/SVGGeometryFrame.cpp#498

The svg code path of common and triggers in startup. I haven't triggered the font related code yet. I'm guessing that might come up during printing.

I switched to the a Cairo image surface and everything seems to work. Push this to try to see shows up -
https://treeherder.mozilla.org/#/jobs?repo=try&revision=05d94085668e112e2d812ba8c7405967ffe18d4a

Ah I forgot, PluginInstanceChild runs in conntet, so this change broke the plugin usage as well.

(In reply to Jim Mathies [:jimm] from comment #6)

Ah I forgot, PluginInstanceChild runs in conntet, so this change broke the
plugin usage as well.

Actually this is incorrect, the child is in the plugin process. We pass the reference surface type over to the child during ShowWindow calls, and this broke the child instance handling there.

Depends on: 1540115
Depends on: 1540776
Depends on: 1541398
No longer depends on: 1540115

I'm going to close this because the bugs that block it a fixed and the main stack in the description is for the creation of devices, which given the correct conditions (webrender, remote canvas, etc.) doesn't happen in the content process any more.

We might want a meta bug for the various gfx uses of win32k, but I think we should file a new bug if we do.

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.