Hacker News new | ask | show | jobs
by cheatercheater 5117 days ago
OK, I see the downvote brigade is in.

Let's analyze this for a second.

The resolution by the OS is ostensibly 1920x1200. This is what apps see and what they render bitmaps for.

This is then upscaled twice in each direction to 3840x2400.

Then, this finally somehow gets put on 2880x1800. As I understand it, it gets downscaled from 3840x2400 directly to 2880x1800.

LOL, it just dawned on me. You guys have been taken for such a fucking ride. I've just checked the numbers, I hadn't noticed it before.

The physical resolution of the monitor is 2880x1800. This is exactly 1.5x more in each direction than 1920x1200, which is the original input format.

Now you must understand two things: 1. scaling is a DSP process. 2. You never use floating point operations in digital signal processing if you can get away with integers, because integer operations are so much cheaper and because the result is always more precise. (The only reason to use floats is to get more headroom, but that's a detail you don't need to worry with because it is in no way applicable to resolution scaling. You could use floats for pixel colour, and many systems do that already)

So what does this mean? How do you multiply by 1.5 if you can only use integers?

--> YOU MULTIPLY BY THREE AND DIVIDE BY TWO. <--

The intermediate resolution of 3840x2400 exists solely as a tiny step in the rescaling algorithm, a step which in itself does not add any information that wasn't there in the original 1920x1200 image. Similarly, some of you audio people may realize that most of your VST or AU plugins have 64x oversampling. Does this mean that your project is working at 12 MHz sampling rate? NO!!! Your recorded material is still at 192k, and your project still does not contain any useful information above 96 kHz. Don't be silly. There's being tricked when not knowing, but given that a majority of the people commenting on mac hardware here seem to have some idea of audio processing, that's just fundamentalist hypocrisy.

You've fallen prey to sensationalist marketing and measurement of e-penis. Except your e-penis is completely made up and never actually happened.

Wow, some people in this thread are so, extremely, gullible. I had really come to expect more from HN, and am truly disappointed and dismayed.

3 comments

>> You never use floating point operations in digital signal processing if you can get away with integers, because integer operations are so much cheaper and because the result is always more precise.

On Nvidia GPUs (the GPU in the machine), integer ops are second class citizens. The GPU architecture is optimized for floating point operations, and they do it extremely well. Using integers instead of floating point is not very advantageous. AMD GPUs are a different story however.

The intermediate resolution of 3840x2400 exists solely as a tiny step in the rescaling algorithm, a step which in itself does not add any information that wasn't there in the original 1920x1200 image.

The thing you're missing is that this step does add information. OS X will render retina graphics for the UI instead of the traditional graphics, then those higher-resolution graphics are downsized. So, instead of an 18x18 icon, it will use a more detailed 36x36 icon, then downscale that. In the case of apps that haven't been updated for retina displays you are correct — certain assets will be upscaled. But the operating system and many core apps are ready for retina display.

Nobody is saying it's a perfect solution, but it's much better than just upscaling. The point is that at these densities downscaling can look pretty good — supposedly better than the native resolutions emulated by the downscaling.

Let's say you have image assets in two sizes - 1x and 2x. If you want to show an image at 1.5x, you don't upscale from 1x, you downscale from 2x so that you have a crisper image.

If you're looking for a practical application of this, watch a YouTube video fullscreen that has 720p and 1080p options on a display that's 1680x1050 or anything in between the two video sizes. The 1080p version is better looking because it's scaled down, not up.

This is the concept behind running a 3820x2400 framebuffer and downscaling it to 2880x1800 for display - you're getting a crisper image because of the use of 2x drawing by the system for text and standard UI elements. Of course, third-party bitmaps aren't going to benefit from this until they're updated, but Apple developers have been through this before with retina displays on iOS devices.