3
$\begingroup$

I know that this Topic is highly Hardware dependent, so i am asking for the case that a monitor is connected to a GPU or motherboard via. Displayport/HDMI

I would like to know is how the monitor is updated.

Do monitors directly read from a GPU provided framebuffer, or do monitors have a internal framebuffer that the GPU updates each frame? Is always the entire Buffer updated or just changed Areas? or something different?

Another thing that i am interested in is how this entire process incooperates Swapchains(with Back and Front Buffers) for example in Windows DXGI?

$\endgroup$

1 Answer 1

5
$\begingroup$

In the typical case, the video card transmits all of the data in the image every frame (every refresh).

In the early days of television technology, it was impossible to do anything else; the display did not have any memory with which to store an entire frame. The incoming signal was turned directly into CRT phosphor excitation. With modern electronics, there is storage, but it is still practical to design the transmission this way.

Why? If nothing else, it must be possible for the monitor to receive a completely different image every time it refreshes. If it were not, then video recordings and video games could not display whatever they wanted; they would have to take into account what fits into the connection. The only thing transferring partial images would offer is a small amount of energy efficiency.


Also, the video transmission is unidirectional. It does not consist of a request to fetch bytes from some memory, followed by a response containing those bytes; instead, the data is just sent, and the monitor must handle it as it arrives. This has several technical advantages:

  • No requirement for high-performance bidirectional links (wiring, transmitters, and receivers); only one direction needs to be high-bandwidth and low-latency.

  • No latency from waiting for responses to requests.

  • Video signals can be split — sent to multiple displays or other devices (recorders, converters, etc.). A bidirectional protocol would need a much more complex intermediate buffer device.

The small amount of information that is carried from the monitor back to the video card is configuration information like the monitor's supported resolutions and refresh rates, and independent communication such as USB carried over the same cable.

The video card receives that configuration information and communicates it to the operating system, which then selects a supported resolution and refresh rate (or lets the user pick) as well as other parameters of the video signal format. This process normally ensures that the monitor receives a signal that it is capable of displaying. If that communication does not succeed (for example, if there is a bug, or if a video splitter is in use with two monitors or receiving divices of different capabilities), then the monitor might display garbage or an error message.


So:

Do monitors directly read from a GPU provided framebuffer, or do monitors have a internal framebuffer that the GPU updates each frame?

Modern monitors have an internal framebuffer, which the video card updates each frame.

Is always the entire Buffer updated or just changed Areas?

The entire buffer.

how this entire process incooperates Swapchains(with Back and Front Buffers)

Swapchains are entirely internal to the GPU; the monitor knows nothing about them. They control which framebuffer memory the GPU reads to produce the video signal carried on the cable, but that video signal contains no information about the swapchain.

$\endgroup$
2
  • $\begingroup$ How does the Monitor and the GPU synchronize thier refresh rates, i know there is Free Sync and GSync but i am curious for the case that there is none present $\endgroup$
    – Schrottiy
    Jun 5 at 17:20
  • $\begingroup$ @Schrottiy Ah, that is handled together with the resolution. I've added a paragraph discussing how that works. (Unfortunately I don't know much about FreeSync/GSync — but I am confident that they must be similarly unidirectional. At a high level perspective, the only change would be that the video cable is left idle (no data) for arbitrary periods, and the monitor would then refresh the physical display panel on a schedule controlled by the actual video data timing rather than expecting any consistent timing.) $\endgroup$
    – Kevin Reid
    Jun 5 at 18:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.