Fallout: New Vegas Black screen if 3DNow! and AMD CPUID is enabled.
- Dominant language
- C++
- Stars
- 8k
- Forks
- 351
- Avg merge
- 12h 31m
- Merged PRs (30d)
- 102
Description
Documenting this so I don't forget this.
Need to enable `CPUID_AMD` in CPUID so the D3D{8,9}x library enables a 3DNow! codepath. Once that codepath is enabled then the game blackscreens immediately. Even the intro logos don't show up.
Tested the game on an actual Phenom that supports 3DNow! and it had no issue rendering the game on Linux+Proton.
There are some minor implementation differences between FEX and Phenom
```
4516 - host/Test_64Bit_3DNow/86.asm (Failed) <- Expected fail, only supported on geode.
4517 - host/Test_64Bit_3DNow/87.asm (Failed) <- Expected fail, only supported on geode.
4522 - host/Test_64Bit_3DNow/96.asm (Failed) <- Tolerance check is off in FEX unittests
4523 - host/Test_64Bit_3DNow/97.asm (Failed) <- Tolerance check is off in FEX unittests
4528 - host/Test_64Bit_3DNow/A6.asm (Failed) <- Expected fail, reciprocal step is only a move on geode/fex, not Phenom
4529 - host/Test_64Bit_3DNow/A7.asm (Failed) <- Expected fail, reciprocal step is only a move on geode/fex, not Phenom
4534 - host/Test_64Bit_3DNow/B6.asm (Failed) <- Expected fail, reciprocal step is only a move on geode/fex, not Phenom
```
Worst case will be if the reciprocals need to have their Newton-Raphson iteration implementated as per Phenom specs. If that /is/ the case that would mean Geode would have the same rendering bug as FEX.
Before I attempt writing a softfloat implementation of those for the 3DNow! reciprocals, I'm going to attempt CPUID spoofing since it might be conflicting or something.
Contributor guide
Research direction
Start with CPUID_AMD handling and the D3D{8,9}x 3DNow! codepath, then review the listed host/Test_64Bit_3DNow tests and their Phenom/FEX differences. Try the proposed CPUID spoofing investigation before considering a softfloat implementation for 3DNow! reciprocals; done means Fallout: New Vegas renders past its intro logos without a black screen.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, linux
- Domain
- computer-graphics, operating-systems
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100