Closed
Bug 1480552
Opened 6 years ago
Closed 6 years ago
sort out D3D requirements for aarch64 windows
Categories
(Core :: Graphics, enhancement, P3)
Tracking
()
RESOLVED
FIXED
mozilla64
Tracking | Status | |
---|---|---|
firefox64 | --- | fixed |
People
(Reporter: froydnj, Assigned: froydnj)
References
(Blocks 1 open bug)
Details
(Whiteboard: [gfx-noted])
Attachments
(1 file)
2.03 KB,
patch
|
ted
:
review+
|
Details | Diff | Splinter Review |
I had to supply MOZ_D3D_CPU_SUFFIX with an interesting value, or configure would yell at me. I couldn't find an arm64 d3dcompiler.dll--it's possible I didn't have the right packages installed--so I temporarily went with the x86-64 one. Do we redistribute this library? What are our options if we can't get a d3dcompiler.dll (and any supporting infrastructure) for aarch64?
Flags: needinfo?(bas)
Updated•6 years ago
|
Priority: -- → P3
Whiteboard: [gfx-noted]
Comment 1•6 years ago
|
||
(In reply to Nathan Froyd [:froydnj] from comment #0) > I had to supply MOZ_D3D_CPU_SUFFIX with an interesting value, or configure > would yell at me. I couldn't find an arm64 d3dcompiler.dll--it's possible I > didn't have the right packages installed--so I temporarily went with the > x86-64 one. > > Do we redistribute this library? What are our options if we can't get a > d3dcompiler.dll (and any supporting infrastructure) for aarch64? Hrm, this is used by ANGLE and probably best answered by Jeff Gilbert. This function https://docs.microsoft.com/en-us/windows/desktop/direct3dhlsl/d3dcompile2, is suggested for UWP, so it would certainly suggest it's available on ARM. Outside of WebGL/ANGLE the gfx shaders are offline compiled, so I sadly don't know that much more about it.
Flags: needinfo?(bas)
Assignee | ||
Comment 2•6 years ago
|
||
(In reply to Bas Schouten (:bas.schouten) from comment #1) > (In reply to Nathan Froyd [:froydnj] from comment #0) > > I had to supply MOZ_D3D_CPU_SUFFIX with an interesting value, or configure > > would yell at me. I couldn't find an arm64 d3dcompiler.dll--it's possible I > > didn't have the right packages installed--so I temporarily went with the > > x86-64 one. > > > > Do we redistribute this library? What are our options if we can't get a > > d3dcompiler.dll (and any supporting infrastructure) for aarch64? > > Hrm, this is used by ANGLE and probably best answered by Jeff Gilbert. > > This function > https://docs.microsoft.com/en-us/windows/desktop/direct3dhlsl/d3dcompile2, > is suggested for UWP, so it would certainly suggest it's available on ARM. > > Outside of WebGL/ANGLE the gfx shaders are offline compiled, so I sadly > don't know that much more about it. The same questions to jgilbert, then. I did notice that MOZ_D3DCOMPILER_VISTA_DLL shows up in our packaging manifests, so I guess we do redistribute it to use at runtime?
Flags: needinfo?(jgilbert)
Comment 3•6 years ago
|
||
ANGLE requires a d3dcompiler dll to live-compile shaders for at least WebGL. Windows 8.1+ has d3dcompiler_47.dll in the system directory on x86/x64. Does it not on arm64? We redistribute the library for systems that don't have it in the system dir. Ideally we can eventually stop doing this. Without a d3dcompiler dll, we can still run using native OpenGL if the driver is installed. (What's our target here?) We would also be able to run software rasterization with Swiftshader once we integrate that, but that's not really acceptable for shipping perf.
Flags: needinfo?(jgilbert)
Assignee | ||
Comment 4•6 years ago
|
||
(In reply to Jeff Gilbert [:jgilbert] from comment #3) > ANGLE requires a d3dcompiler dll to live-compile shaders for at least WebGL. OK. So bits of WebGL just fall over if we don't have this library. > Windows 8.1+ has d3dcompiler_47.dll in the system directory on x86/x64. Does > it not on arm64? > We redistribute the library for systems that don't have it in the system > dir. Ideally we can eventually stop doing this. I don't know. It's possible arm64 just includes it by default nowadays. David, you have an arm64 windows machine, right? Do you have a d3dcompiler_47.dll? > Without a d3dcompiler dll, we can still run using native OpenGL if the > driver is installed. (What's our target here?) I don't understand the question. Could you please elaborate? > We would also be able to run software rasterization with Swiftshader once we > integrate that, but that's not really acceptable for shipping perf. What is Swiftshader? I haven't heard of this thing before.
Flags: needinfo?(jgilbert)
Flags: needinfo?(dmajor)
Comment 5•6 years ago
|
||
(In reply to Nathan Froyd [:froydnj] from comment #4) > (In reply to Jeff Gilbert [:jgilbert] from comment #3) > > ANGLE requires a d3dcompiler dll to live-compile shaders for at least WebGL. > > OK. So bits of WebGL just fall over if we don't have this library. WebGL will not run /at all/ without this library on Windows today. (hard requirement for ANGLE) > > Without a d3dcompiler dll, we can still run using native OpenGL if the > > driver is installed. (What's our target here?) > > I don't understand the question. Could you please elaborate? What are our target machines and configurations? (partly so I can know what to google!) We don't build for Win+ARM at all right now, but what configurations are we aiming to target here? It looks like Win+ARM is the only configuration? And that it's always arm64? A quick google tells me that Win+ARM doesn't allow native OpenGL drivers unfortunately, so we're stuck with ANGLE or Swiftshader as solutions there. > > We would also be able to run software rasterization with Swiftshader once we > > integrate that, but that's not really acceptable for shipping perf. > > What is Swiftshader? I haven't heard of this thing before. It's a small, fast software rasterizer. Their webpage has more details, but it would let us have a single software GL backend, instead of relying on D3D Warp and Mesa llvmpipe. I'm aiming to ship it in Gecko later this year.
Flags: needinfo?(jgilbert)
Assignee | ||
Comment 6•6 years ago
|
||
(In reply to Jeff Gilbert [:jgilbert] from comment #5) > WebGL will not run /at all/ without this library on Windows today. (hard > requirement for ANGLE) OK, that's good to know. Do we know what Edge does on ARM64, Anthony? > > > Without a d3dcompiler dll, we can still run using native OpenGL if the > > > driver is installed. (What's our target here?) > > > > I don't understand the question. Could you please elaborate? > > What are our target machines and configurations? (partly so I can know what > to google!) We don't build for Win+ARM at all right now, but what > configurations are we aiming to target here? It looks like Win+ARM is the > only configuration? And that it's always arm64? We are not doing (at least to my knowledge) Win+32-bit arm at all. This is strictly AArch64 Windows. I don't know how many machines we have to support; at least for the first iteration, we can probably get away with running on one or two machines, like the NovaGo: https://www.asus.com/us/2-in-1-PCs/ASUS-NovaGo-TP370QL/ Anthony may be able to provide more details here. > A quick google tells me that Win+ARM doesn't allow native OpenGL drivers > unfortunately, so we're stuck with ANGLE or Swiftshader as solutions there. I don't know whether the situation is the same on AArch64 or not.
Flags: needinfo?(ajones)
(In reply to Nathan Froyd [:froydnj] from comment #4) > I don't know. It's possible arm64 just includes it by default nowadays. > David, you have an arm64 windows machine, right? Do you have a > d3dcompiler_47.dll? My machine has a System32\D3DCompiler_47.dll that dumpbin says is AArch64, and a SysWOW64\D3DCompiler_47.dll of type x86.
Flags: needinfo?(dmajor)
Comment 8•6 years ago
|
||
Good news then!: We should set the defines like normal, but just not package the d3d compiler dll on Win+ARM, and we should end up loading the (one of the?) system D3DCompiler_47.dll.
Assignee | ||
Comment 9•6 years ago
|
||
AArch64 Windows includes the necessary DLL in its default configuration, so we don't need to bother locating it in the SDK. We made need to distribute an updated version that won't by on the system by default, though, so we need some extra checking. All this should really be ported to moz.configure, but all in good time...
Attachment #9005000 -
Flags: review?(core-build-config-reviews)
Assignee | ||
Updated•6 years ago
|
Flags: needinfo?(ajones)
Updated•6 years ago
|
Assignee: nobody → nfroyd
Comment 10•6 years ago
|
||
Comment on attachment 9005000 [details] [diff] [review] handle aarch64 windows when determining MOZ_D3DCOMPILER_VISTA_DLL Review of attachment 9005000 [details] [diff] [review]: ----------------------------------------------------------------- Fun.
Attachment #9005000 -
Flags: review?(core-build-config-reviews) → review+
Comment 11•6 years ago
|
||
Pushed by nfroyd@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/9be13bbe1877 handle aarch64 windows when determining MOZ_D3DCOMPILER_VISTA_DLL; r=ted.mielczarek
Comment 12•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/9be13bbe1877
Status: NEW → RESOLVED
Closed: 6 years ago
status-firefox64:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla64
You need to log in
before you can comment on or make changes to this bug.
Description
•