⚠ [BUG] Transform filter CROPS instead of scaling

This is obviously for the purpose of aspect-ratio correction to mimic CRT monitors that stretched analog input signal to entire screen regardless of whether the aspect ratio of input signal was equal to the physical aspect ratio of the monitor.

Scaling 320×200 to 1600×1200 is one of the cases when combination of integer-ratio scaling with aspect-ratio correction is possible with zero error, and the resulting aspect ratio is exactly 4:3.

Given that the nVidia transform-filter feature uses generic nearest neighbour and not integer scaling itself, it should be possible to use different ratios horizontally and vertically, and there should be no distortion as long as ratios and resulting scaled size are calculated correctly. Just try. I’m going to test this later if my Ubuntu is still working.

Thanks for the response. I have tried, and it seems to work at least to my untrained eye.

My motivation was dosbox. With the above method it is possible to disable dosbox internal scalers, and simply run dosbox fullscreen in the 1600x1200 window. Dosbox applications then play in the correct aspect ratio with integer scaling.

Again, I have tried this in ubuntu and it seems to work. In the uploaded screenshot, the image on the left is scaled using the method I mentioned, and the image on the right uses the notmal2x scaler from dosbox. Take a look at the “squares” to the left of the character. They are all the same size in the left image, but different sizes on the right image. So the image on the left seems to have scaled correctly, but dosbox scales imperfectly. What do you think?

Consider using DOSBox ECE that supports pixel-perfect nonblurry upscaling with aspect-ratio correction and perfectly uniform pixels. A configuration example is provided in my article.

Thanks for the tip MT. I will check it out when I have the time. But for now my method seems to work just fine.

Out of curiosity, and apologies if I am going off topic: How demanding is 6x scaling in DOSBox ECE? In theory, without having tested, my method should be less demanding since dosbox is doing no scaling by itself.

Afaik, pixel-perfect scaling in DOSBox ECE is GPU-accelerated too as long as OpenGL backend (openglpp) is used. nVidia’s implementation of transform filters under Linux is most likely implemented using a similar approach (probably rendering to texture) with similar performance. As a bonus, DOSBox ECE calculates pixel size automatically with lowest possible aspect-ratio error while using screen space as fully as possible.