I can understand why 100%, 200%, 300%... scalings are technically easier. But when it comes to fractional scaling, why is it limited to 125%, 150%, and 175%? Is it more difficult to implement, for example, 110% than to implement 125%?
Similar to Philippos answer I suspect this computation is performed by multiplying the original with values from a matrix. For this to be efficient you would want the matrix to be as small as possible so it needs a very small repeat. 200% repeats every source pixel. 150% Repeats every 2. 125% repeats every 4 pixels.– Philip CoulingNov 10, 2022 at 13:03
Not knowing how this is actually implemented on different systems, I can only guess:
It is indeed more efficient to implement a bitmap scaling by those values. Think of 150% scaling:
at 100%: 1 2 3 4 ... --- --- --- -- -- -- -- -- at 150%: 1'2'3'4'5'6'...
Pixel 1' will be the same ass pixel 1, pixel 2' will be (pixel 1 + pixel 2) / 2, pixel 3' will be the same as pixel 2 and so on. So you need a simple add+shift operation, which is done in efficiently in hardware in any GPU or vector engine. Likewise the double shift that you need for 125% scaling, while other relations like said 110% require an actual divide operation.
For CPU (software rendering, I guess), I can understand that logic, but can't GPU scale at arbitrary value fast enough? I mean, when I play a video, I can resize the video window at any size and I did not notice any performance difference. Nov 10, 2022 at 18:49
Sure, you wouldn't notice on a CPU either, maybe by measuring power consumption. And knowing that Gnome is running on many different systems, some of them battery life critical, some of them without GPU, I can imagine they did decided not to have different scaling options depending on the hardware. But as I said, this is just a guess. Nov 15, 2022 at 8:08