-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Reimplement bicubic upscaling. #15803
Conversation
Hmm, running
|
There's something weirdly flaky about the tests on ubuntu, that we need to look into. |
There is some mildly suspicious stuff in Core/HLE/sceRtc.cpp, like using not fully zero-initialized tm, despite:
Though changing that specifically does not fix the tests. |
It'd be ideal if you could follow the EditorConfig rules and just use tabs for indentation. I realize this is code you wrote externally, but best to just stay consistent. Does Might be the Rtc tests fail due to some local timezone thing. The sporadic failure needs to be looked into but is not likely related to Rtc... -[Unknown] |
I think it refers to the source image's lines, so the number of destination image's lines (what |
Okay, got it. That sounds fine, then. -[Unknown] |
Done, I think. |
I should probably mention, that it upscales with Catmull-Rom ('bicubic', that is, on the other hand 'hybrid' uses B-spline, because that's apparently what it wants), so it may look a bit sharper than the previous implementation (see table). Feel free to adjust B, C coefficients, or even expose them to the user. Addendum: the paper mildly recommends sticking to B+2*C=1, which would make it 1-parametric (easier to map to a slider?). Not that the other choices neccessarily look bad. Also, the values outside [0;1] are valid (e.g. the paper mentions "notch filter" with B=3/2, C=-1/4). |
Did a bit of profiling from the actual emulator, and the results are consistent with the synthetic benchmark before: the speedup for bicubic upscaling is about 10x (unlike the previous benchmark, this also includes multithreading). This only counts the CPU upscaling itself though, not the time it takes to upload the resulting texture to GPU. |
Great, thanks! |
Integrated code from #15774.
Only very lightly tested.