Closed Bug 1407289 Opened 3 years ago Closed 3 years ago

Perma mingw32 /builds/worker/workspace/build/src/gfx/angle/src/common/platform.h:64:21: fatal error: d3d11_3.h: No such file or directory

Categories

(Firefox Build System :: General, defect)

defect
Not set
normal

Tracking

(firefox58 fixed)

RESOLVED FIXED
mozilla58
Tracking Status
firefox58 --- fixed

People

(Reporter: aryx, Assigned: tjr)

References

Details

(Keywords: intermittent-failure, Whiteboard: [stockwell fixed:product])

Attachments

(2 files)

See https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=e1b5e17e59733b9572704ed9fc3d06be43ccb8bb&filter-resultStatus=testfailed&filter-resultStatus=busted&filter-resultStatus=usercancel&filter-resultStatus=runnable&filter-resultStatus=exception&filter-resultStatus=retry (original push was busted by a previous push).

Build log: https://treeherder.mozilla.org/logviewer.html#?job_id=135939105&repo=mozilla-inbound
[task 2017-10-10T13:54:41.078Z] 13:54:41     INFO -  In file included from /builds/worker/workspace/build/src/gfx/angle/src/common/angleutils.h:12:0,
[task 2017-10-10T13:54:41.079Z] 13:54:41     INFO -                   from /builds/worker/workspace/build/src/gfx/angle/src/compiler/preprocessor/Tokenizer.h:10,
[task 2017-10-10T13:54:41.079Z] 13:54:41     INFO -                   from ./Tokenizer.l:917:
[task 2017-10-10T13:54:41.080Z] 13:54:41     INFO -  /builds/worker/workspace/build/src/gfx/angle/src/common/platform.h:64:21: fatal error: d3d11_3.h: No such file or directory
[task 2017-10-10T13:54:41.080Z] 13:54:41     INFO -   #include <d3d11_3.h>
[task 2017-10-10T13:54:41.080Z] 13:54:41     INFO -                       ^
[task 2017-10-10T13:54:41.080Z] 13:54:41     INFO -  compilation terminated.
Flags: needinfo?(tom)
Summary: Windows mingw32 builds broken after Bug 1371190 - Update ANGLE to chromium/3229 landed → Perma mingw32 /builds/worker/workspace/build/src/gfx/angle/src/common/platform.h:64:21: fatal error: d3d11_3.h: No such file or directory
MinGW is behind on the headers, but their upstream (Wine) has recently imported them so hopefully they should come down soon. I will fiddle a little with a local patch.
Flags: needinfo?(tom)
This build is failing on every push. Can you get it into the tree today or disable those temporarily, please?
Flags: needinfo?(tom)
(In reply to Sebastian Hengst [:aryx][:archaeopteryx] (needinfo on intermittent or backout) from comment #4)
> This build is failing on every push. Can you get it into the tree today or
> disable those temporarily, please?

Yes, I've resolved the MinGW issue (with Jacek's help), but there are additional build failures inside Angle. However, it might be easy so I just fired off a try run to see if that resolves everything.
Angle Failure: https://treeherder.mozilla.org/#/jobs?repo=try&revision=24aa6cf4235e9710c380aca2ff5faace51bfc972&selectedJob=136206739

Attempt to fix:  https://treeherder.mozilla.org/#/jobs?repo=try&revision=de98b8de4ef60ce7d6a92e435464db499dabb12c
Flags: needinfo?(tom)
Angle Errors:

>  In file included from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:21:0,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h:22,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h:15,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h:14,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:9:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:29:13: error: 'BlendStateKey' is not a member of 'rx::d3d11'
>   struct hash<rx::d3d11::BlendStateKey>
>               ^~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:29:13: error: 'BlendStateKey' is not a member of 'rx::d3d11'
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:29:37: error: template argument 1 is invalid
>   struct hash<rx::d3d11::BlendStateKey>
>                                       ^
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:38:13: error: 'RasterizerStateKey' is not a member of 'rx::d3d11'
>   struct hash<rx::d3d11::RasterizerStateKey>
>               ^~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:38:13: error: 'RasterizerStateKey' is not a member of 'rx::d3d11'
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:38:42: error: template argument 1 is invalid
>   struct hash<rx::d3d11::RasterizerStateKey>
>                                            ^
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:74:19: error: 'BlendStateKey' in namespace 'rx::d3d11' does not name a type
>       static d3d11::BlendStateKey GetBlendStateKey(const gl::Context *context,
>                     ^~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:78:42: error: 'BlendStateKey' in namespace 'rx::d3d11' does not name a type
>                               const d3d11::BlendStateKey &key,
>                                            ^~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:103:56: error: 'BlendStateKey' is not a member of 'rx::d3d11'
>       using BlendStateMap = angle::base::HashingMRUCache<d3d11::BlendStateKey, d3d11::BlendState>;
>                                                          ^~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:103:56: error: 'BlendStateKey' is not a member of 'rx::d3d11'
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:103:95: error: template argument 1 is invalid
>       using BlendStateMap = angle::base::HashingMRUCache<d3d11::BlendStateKey, d3d11::BlendState>;
>                                                                                                 ^
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:103:95: error: template argument 3 is invalid
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:104:5: error: 'BlendStateMap' does not name a type
>       BlendStateMap mBlendStateCache;
>       ^~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:108:38: error: 'RasterizerStateKey' is not a member of 'rx::d3d11'
>           angle::base::HashingMRUCache<d3d11::RasterizerStateKey, d3d11::RasterizerState>;
>                                        ^~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:108:38: error: 'RasterizerStateKey' is not a member of 'rx::d3d11'
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:108:87: error: template argument 1 is invalid
>           angle::base::HashingMRUCache<d3d11::RasterizerStateKey, d3d11::RasterizerState>;
>                                                                                         ^
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:108:87: error: template argument 3 is invalid
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h:109:5: error: 'RasterizerStateMap' does not name a type
>       RasterizerStateMap mRasterizerStateCache;
>       ^~~~~~~~~~~~~~~~~~
>  In file included from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h:22:0,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h:15,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h:14,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:9:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:311:42: error: 'BlendStateKey' in namespace 'rx::d3d11' does not name a type
>       gl::Error getBlendState(const d3d11::BlendStateKey &key,
>                                            ^~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:416:74: error: 'Format' in namespace 'rx::d3d11' does not name a type
>                                                               const d3d11::Format &formatSet,
>                                                                            ^~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:418:61: error: 'StagingAccess' has not been declared
>                                                               StagingAccess readAndWriteAccess);
>                                                               ^~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:440:44: error: 'Format' in namespace 'rx::d3d11' does not name a type
>                                 const d3d11::Format &format,
>                                              ^~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:447:44: error: 'Format' in namespace 'rx::d3d11' does not name a type
>                                 const d3d11::Format &format,
>                                              ^~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:452:44: error: 'Format' in namespace 'rx::d3d11' does not name a type
>                                 const d3d11::Format &format,
>                                              ^~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:509:12: error: 'ANGLED3D11DeviceType' in namespace 'rx::d3d11' does not name a type
>       d3d11::ANGLED3D11DeviceType getDeviceType() const;
>              ^~~~~~~~~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:569:21: error: field 'mCachedResolveTexture' has incomplete type 'rx::TextureHelper11'
>       TextureHelper11 mCachedResolveTexture;
>                       ^~~~~~~~~~~~~~~~~~~~~
>  In file included from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h:14:0,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h:14,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:9:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/ResourceManager11.h:39:7: note: forward declaration of 'class rx::TextureHelper11'
>   class TextureHelper11;
>         ^~~~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp: In member function 'EGLint rx::SwapChain11::resetOffscreenColorBuffer(const gl::Context*, int, int)':
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:260:70: error: no matching function for call to 'rx::Renderer11::allocateTexture(D3D11_TEXTURE2D_DESC&, const rx::d3d11::Format&, rx::TextureHelper11*)'
>                                                      &mOffscreenTexture);
>                                                                        ^
>  In file included from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h:22:0,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h:15,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h:14,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:9:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:439:15: note: candidate: template<class DescT> gl::Error rx::Renderer11::allocateTexture(const DescT&, const int&, rx::TextureHelper11*)
>       gl::Error allocateTexture(const DescT &desc,
>                 ^~~~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:439:15: note:   template argument deduction/substitution failed:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:259:74: note:   cannot convert 'backbufferFormatInfo' (type 'const rx::d3d11::Format') to type 'const int&'
>           gl::Error err = mRenderer->allocateTexture(offscreenTextureDesc, backbufferFormatInfo,
>                                                                            ^~~~~~~~~~~~~~~~~~~~
>  In file included from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h:22:0,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h:15,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h:14,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:9:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:446:15: note: candidate: gl::Error rx::Renderer11::allocateTexture(const D3D11_TEXTURE2D_DESC&, const int&, const D3D11_SUBRESOURCE_DATA*, rx::TextureHelper11*)
>       gl::Error allocateTexture(const D3D11_TEXTURE2D_DESC &desc,
>                 ^~~~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:446:15: note:   candidate expects 4 arguments, 3 provided
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:451:15: note: candidate: gl::Error rx::Renderer11::allocateTexture(const D3D11_TEXTURE3D_DESC&, const int&, const D3D11_SUBRESOURCE_DATA*, rx::TextureHelper11*)
>       gl::Error allocateTexture(const D3D11_TEXTURE3D_DESC &desc,
>                 ^~~~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:451:15: note:   candidate expects 4 arguments, 3 provided
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp: In member function 'EGLint rx::SwapChain11::resetOffscreenDepthBuffer(int, int)':
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:401:73: error: no matching function for call to 'rx::Renderer11::allocateTexture(D3D11_TEXTURE2D_DESC&, const rx::d3d11::Format&, rx::TextureHelper11*)'
>                                                      &mDepthStencilTexture);
>                                                                           ^
>  In file included from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h:22:0,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h:15,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h:14,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:9:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:439:15: note: candidate: template<class DescT> gl::Error rx::Renderer11::allocateTexture(const DescT&, const int&, rx::TextureHelper11*)
>       gl::Error allocateTexture(const DescT &desc,
>                 ^~~~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:439:15: note:   template argument deduction/substitution failed:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:400:77: note:   cannot convert 'depthBufferFormatInfo' (type 'const rx::d3d11::Format') to type 'const int&'
>           gl::Error err = mRenderer->allocateTexture(depthStencilTextureDesc, depthBufferFormatInfo,
>                                                                               ^~~~~~~~~~~~~~~~~~~~~
>  In file included from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h:22:0,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h:15,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h:14,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:9:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:446:15: note: candidate: gl::Error rx::Renderer11::allocateTexture(const D3D11_TEXTURE2D_DESC&, const int&, const D3D11_SUBRESOURCE_DATA*, rx::TextureHelper11*)
>       gl::Error allocateTexture(const D3D11_TEXTURE2D_DESC &desc,
>                 ^~~~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:446:15: note:   candidate expects 4 arguments, 3 provided
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:451:15: note: candidate: gl::Error rx::Renderer11::allocateTexture(const D3D11_TEXTURE3D_DESC&, const int&, const D3D11_SUBRESOURCE_DATA*, rx::TextureHelper11*)
>       gl::Error allocateTexture(const D3D11_TEXTURE3D_DESC &desc,
>                 ^~~~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:451:15: note:   candidate expects 4 arguments, 3 provided
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp: In member function 'const SharedSRV& rx::SwapChain11::getRenderTargetShaderResource()':
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:960:80: error: no matching function for call to 'rx::Renderer11::allocateTexture(D3D11_TEXTURE2D_DESC&, const rx::d3d11::Format&, rx::TextureHelper11*)'
>                                                      &mOffscreenTextureCopyForSRV);
>                                                                                  ^
>  In file included from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h:22:0,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h:15,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h:14,
>                   from /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:9:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:439:15: note: candidate: template<class DescT> gl::Error rx::Renderer11::allocateTexture(const DescT&, const int&, rx::TextureHelper11*)
>       gl::Error allocateTexture(const DescT &desc,
>                 ^~~~~~~~~~~~~~~
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h:439:15: note:   template argument deduction/substitution failed:
>  /builds/worker/workspace/build/src/gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp:959:71: note:   cannot convert 'backbufferFormatInfo' (type 'const rx::d3d11::Format') to type 'const int&'
>           gl::Error err = mRenderer->allocateTexture(offscreenCopyDesc, backbufferFormatInfo,
>                                                                         ^~~~~~~~~~~~~~~~~~~~>


Right now it's not clear to me what's wrong; I looked at the first one, BlendStateKey, and it seems to be fine...
Okay I figured it out, and I *think* that this try run (and the attached squashed patch) should succeed, barring yet-more template misunderstandings on my part:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=27636f6740668a21cb41015a82baba94e784e0fb
Comment on attachment 8917433 [details]
Bug 1407289 Move classes from renderer11_utils.h

https://reviewboard.mozilla.org/r/188418/#review193862

LGTM
Attachment #8917433 - Flags: review?(cleu) → review+
Okay, I tried to be explicit in the commit message but this was a doosey.

First: The initial build break was because MinGW lacked some newish headers. We bump the MinGW version to pick those up, thanks to Jacek getting them in a few hours after this turning up.

But that break masked a tougher problem: some of the Angle code is not legal by spec. They forward declare a class, but then call a method on it as shown on the broken build here: https://treeherder.mozilla.org/#/jobs?repo=try&revision=0b5d11b521d5f10253a45e4ae2fe90105a444f9b&selectedJob=136246167 . That's a no-no. BUT MSVC allows it because they have a weird two-phase compiler thing going on: https://stackoverflow.com/questions/30992044/msvc-allows-use-of-incomplete-undeclared-types-inside-of-template-class-method-b https://stackoverflow.com/questions/37599877/why-an-incomplete-type-is-detected-in-clang-inside-a-template-method

Clang, to get msvc compatibility, had to add this: https://clang.llvm.org/docs/MSVCCompatibility.html#template-instantiation-and-name-lookup

Anyway, after trying several different things, eventually the solution that worked was relocating the declarations into a new file after the class they had forward declared. I'm going to try and get this change upstreamed.
Comment on attachment 8917223 [details]
Bug 1407289 Bump MinGW commit

https://reviewboard.mozilla.org/r/188246/#review194098

rs=me
Attachment #8917223 - Flags: review?(nfroyd) → review+
(In reply to Tom Ritter [:tjr] (PTO 10/12-1016) from comment #17)
> But that break masked a tougher problem: some of the Angle code is not legal
> by spec. They forward declare a class, but then call a method on it as shown
> on the broken build here:
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=0b5d11b521d5f10253a45e4ae2fe90105a444f9b&selectedJob=1
> 36246167 . That's a no-no. BUT MSVC allows it because they have a weird
> two-phase compiler thing going on:
> https://stackoverflow.com/questions/30992044/msvc-allows-use-of-incomplete-
> undeclared-types-inside-of-template-class-method-b
> https://stackoverflow.com/questions/37599877/why-an-incomplete-type-is-
> detected-in-clang-inside-a-template-method
> 
> Clang, to get msvc compatibility, had to add this:
> https://clang.llvm.org/docs/MSVCCompatibility.html#template-instantiation-
> and-name-lookup
> 
> Anyway, after trying several different things, eventually the solution that
> worked was relocating the declarations into a new file after the class they
> had forward declared. I'm going to try and get this change upstreamed.

Aha! I thought that might be what's going on. The header by itself is naively invalid, but without reading up on template instantiation rules, I figured it must somehow be delayed later than I expected.
Thanks for solving this riddle!
Comment on attachment 8917433 [details]
Bug 1407289 Move classes from renderer11_utils.h

https://reviewboard.mozilla.org/r/188418/#review194238

This works for me!
Attachment #8917433 - Flags: review?(jgilbert) → review+
Pushed by nfroyd@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/692787b51f8e
Bump MinGW commit r=froydnj
https://hg.mozilla.org/integration/autoland/rev/2d61af51e1a5
Move classes from renderer11_utils.h r=jgilbert,Lenzak
https://hg.mozilla.org/mozilla-central/rev/692787b51f8e
https://hg.mozilla.org/mozilla-central/rev/2d61af51e1a5
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla58
Whiteboard: [stockwell fixed:product]
Assignee: nobody → tom
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.