Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Everything returns 0x887a0005 "GetDeviceRemovedReason" (GPU device instance suspended) #4

Open
m-7761 opened this issue Aug 8, 2021 · 2 comments

Comments

@m-7761
Copy link

m-7761 commented Aug 8, 2021

I was going to rebuild the test DLL from #2 because I found a bug that kicked in when changing the resolution that might be mistaken for a D3D9on12 bug. However, something I changed in the ensuing days have caused D3D9on12 to start returning an error code that is 0x887a0005 that seems to be returned by every function and so appears in random places. MSVC has the following tooltip for the HRESULT value:

0x887a0005 : "The GPU device instance has been suspended. Use GetDeviceRemovedReason to determine the appropriate action."

I wonder what I changed to evoke the wrath of this problem. I've never seen D3D9 require a "device reset" in years of working with it. Normally this kind of error is returned by functions like Present and GetCooperativeLevel I believe. I don't know, maybe every function returns it but that seems like a programming nightmare for every function to return this kind of error. I've never seen it before so I'm unsure.

[Edited: I am considering building the D3D9on12 project to get debug stuff and see if I can contribute. It's interesting and would be very helpful to me if it gets to the point of working or if I can identify what gives it trouble in order to avoid it. I just don't know if I have room in my schedule to take an afternoon to see if it builds easily or not.]

@vdwtanner
Copy link
Collaborator

I don't have a good answer off the top of my head as to why you are seeing that error, but regarding your edit at least it should be pretty simple to get the project building. There's a section on it in the readme, but tldr is you need to install the WDK, clone the project, and then you should be able to use CMake to generate a project for your preferred IDE. I tend to use Visual Studio and a separate build directory, so from my build directory I run a command like the following: cmake -G "Visual Studio 16 2019" -A x64 path/to/cloned/repo -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded$<$<CONFIG:Debug>:Debug>"

@m-7761
Copy link
Author

m-7761 commented Aug 10, 2021

I will give it a shot in a few days when I have an unmetered download window. I didn't doubt it's probably not a difficult set up I just have to be careful about going down a rabbit hole, but I think I should look at WDK anyway in case it has application to some low-level USB work I have on my schedule. As for this error code, if it's directly from D3D12 (just forwarded) I think maybe it should be filtered out and not stop most D3D9 methods from succeeding until Present is called. But it's probably something catastrophic that shouldn't be happening in the first place too, indicative of some error inside D3D9on12. I wonder how many products are using it, if it's intended to eventually replace vendor drivers for D3D9. In that case it needs to be more solid :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants