Add a less broken alternative to ID3D12Device_GetAdapterLuid()
Could we have a HRESULT ID3D12Device_GetAdapterLuid(ID3D12Device*, LUID*) instead? Figuring out the proper way to call this from C is a pain. Some examples of the problems caused by this function:
https://github.com/amerkoleci/Vortice.Windows/issues/201
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26338
https://stackoverflow.com/questions/65197140/msvc-crash-when-invoking-a-method-directly-via-the-vtable-that-returns-by-value
The latest version of the header was updated to support non-MSVC compilers. Does this help your issue?
#if defined(_MSC_VER) || !defined(_WIN32)
virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
#else
virtual LUID *STDMETHODCALLTYPE GetAdapterLuid(
LUID * RetVal) = 0;
#endif
I don't think so, since I was compiling with MSVC when I faced this issue. It's a problem with the C API.
I ended up adding a C++ module with wrappers like this
HRESULT ID3D12Resource_GetDescNonBroken(ID3D12Resource *t,
D3D12_RESOURCE_DESC *d) {
*d = t->GetDesc();
return S_OK;
}