-
Better 32 bit Windows Fix · f9e9cf6eAlexis Hetu authored
The initial issue that the workaround was fixing was that, on x86, there are various C calling conventions (__stdcall, __fastcall, __vectorcall) that mangle in the number of bytes used to pass the parameters. Both Clang and the Visual Studio compiler were crashing while attempting to calculate the number of bytes necessary so that it can mangle the name of the function. It needs the mangled name to emit deviceFunctionPointers, which is some large table of function pointers. The crashes happened because not all of the parameters of the function in question are complete, i.e. some of them are uninstantiated templates or forward declarations. The fix is then to include template instantiation directly into the VK_DEFINE_NON_DISPATCHABLE_HANDLE macro. Because template instantiation of an already specialized template causes a warning (treated as an error in Chromium), an extra layer of indirection was added to make sure we don't hit this issue. Bug b/129979580 Change-Id: Id811b107be51f494f45fab2ff0cec18e7cfbafaf Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/32449 Presubmit-Ready: Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by:
Alexis Hétu <sugoi@google.com>
f9e9cf6e
×