Better 32 bit Windows Fix
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>
Showing
Please
register
or
sign in
to comment