DirectX-Headers icon indicating copy to clipboard operation
DirectX-Headers copied to clipboard

Add a less broken alternative to ID3D12Device_GetAdapterLuid()

Open ue4brainstorm opened this issue 2 years ago • 2 comments

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

ue4brainstorm avatar Feb 16 '24 07:02 ue4brainstorm

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

walbourn avatar Nov 07 '24 18:11 walbourn

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;
}

jacereda avatar Nov 08 '24 06:11 jacereda