<p>Taking a screen shot is something that is &quot;programmed&quot;. Different software systems will go about handling of a &quot;screen shot&quot; differently.</p>
<p>By programmed, I mean that the developer has to write actual code that manages the data that makes up the final image.</p>
<p>The one thing that a screen shot is not: It's not a literal &quot;screen shot&quot; of data that the monitor is displaying. It typically is a copy of the data that is about to be sent off to be displayed such as the frame buffer, or a copy of a swap image. The data is coming from the GPU not the display device.</p>
<p>Any setting on the display device such as brightness are not capture, no should they be as this would make the image specific to a single user with their specific device settings making the image look different on every single device it is displayed on. The goal of manufacturers is to set a display device up so that it displays data in a way that adheres to a specification. The image is then captured in a format that also adheres to a spec, such as sRGB. If this is done accurately then the captured image should look the same on any display device. The image is then saved in a format that tells others what specification it is adhering to. That information is saved inside files such as jpg.</p>
<p>However, taking an exact &quot;grab&quot; of the data sitting on the GPU will not necessarily produce good results and most programs will modify it in some way such as to do some anti-aliasing. It must also be reformatted to match the spec of a image format. An HDR image may need to be converted to SDR if it is going to be saved to a jpg for example. Screen grab software, whether it is part a game engine, or a separate piece of software often have settings that allow the image to be modified as well.</p>
<p>The exact technical details are going to differ between programs and even between graphics API's. DirectX will be different from OpenGL.</p>
<hr />
<p>Fundamentally, modern GPU's adhere to a specification and the data coming out of the GPU is formatted to that spec. The two most popular spec's are HDMI and DisplayPort. The Display Device sends EDID (Extended Display Identification Data) to the GPU as part of that protocol. This tells the GPU some limited information about the display device. The GPU &quot;remembers&quot; this information but may not set aside an exact one-to-one mapping of pixel data, there is a buffer, but don't lock your thinking into anything like &quot;oh there must be a one to one mapping there&quot;. The GPU is free to set aside any size chunk it so pleases and individual manufactures may have different ideas on what the correct amount of data to set aside is.</p>
<p>When it is time to transmit the data, as agreed on by the protocol, that buffer is converted to the connection format such as HDMI. Once the data is converted and sent out over the wires using that protocol the GPU looses interest and it is up to the display device to convert the HDMI data to a displayable format. This is where the settings on the monitor come into play, brightness, color space, and all the other settings on the monitor are applied to the image that has been decoded from the HDMI format to whatever internal format the device needs to display the data.</p>

CC BY-SA 4.0
2024-05-27T15:54:08.873Z
so screenshot does not contain any detail related to the screen. can you tell me what kind of different operations GPU performed on the data before storing that data in the framebuffer?  One more thing i have read somewhere that framebuffer contain data that can correctly displayed on the monitor according to the monitor resolution. Therefore, if the pixel mapping is required that also has been done by the GPU on the data. Can you share details about that, how the mapping is done?
Techie
CC BY-SA 4.0
2024-05-28T10:15:32.573Z
The kinds of operations that can be performed on data by the GPU is **vast** since the GPU can be programmed. GPU's have a programming language and we can write programs that operate on data sitting in the GPU before sending it off for display. I added a bit to my answer about "mapping display data" between the GPU and the display device.
pmw1234
CC BY-SA 4.0
2024-05-27T12:08:14.633Z
2024-05-28T11:15:40.930Z
2024-05-28T11:15:40.930Z
pmw1234
<p>If we take screenshot of image displayed on a monitor screen, then does it take only framebuffer data? Does the framebuffer data is independent of display screen properties like contrast, brightness? or how much dependency of screen properties is their on framebuffer data? i am asking about the modern LCD/LED monitors.</p>
<p>Please explain the technical process of taking the screenshot of the image displayed on the screen.</p>
<p>Does the gamma correction, anti-aliasing and any other operations is done on the framebuffer data before sending the data to modern LCD/LED monitor or is it done before storing the data in the framebuffer.</p>
<p>Does the framebuffer exists in the LCD/LED monitor or on the motherboard. Also, if the frame buffer exists on the modern LCD/LED monitor then when did the operations (like gamma correction, anti-aliasing and any other operations) are performed before display an image on screen?</p>

<image-processing><gpu><antialiasing><frame-buffer>
what technicalities involved in screenshot process? what is the dependency of screen properties in the screenshot of an image?
Techie
# what technicalities involved in screenshot process? what is the dependency of screen properties in the screenshot of an image?

(Asked by: username_0 on 2024-05-27)

If we take screenshot of image displayed on a monitor screen, then does it take only framebuffer data? Does the framebuffer data is independent of display screen properties like contrast, brightness? or how much dependency of screen properties is their on framebuffer data? i am asking about the modern LCD/LED monitors.

Please explain the technical process of taking the screenshot of the image displayed on the screen.

Does the gamma correction, anti-aliasing and any other operations is done on the framebuffer data before sending the data to modern LCD/LED monitor or is it done before storing the data in the framebuffer.

Does the framebuffer exists in the LCD/LED monitor or on the motherboard. Also, if the frame buffer exists on the modern LCD/LED monitor then when did the operations (like gamma correction, anti-aliasing and any other operations) are performed before display an image on screen?

**Tags:** image-processing, gpu, antialiasing, frame-buffer


---

## 1 answers

### Answer by username_1 on 2024-05-27. Score: 0

Taking a screen shot is something that is "programmed". Different software systems will go about handling of a "screen shot" differently.

By programmed, I mean that the developer has to write actual code that manages the data that makes up the final image.

The one thing that a screen shot is not: It's not a literal "screen shot" of data that the monitor is displaying. It typically is a copy of the data that is about to be sent off to be displayed such as the frame buffer, or a copy of a swap image. The data is coming from the GPU not the display device.

Any setting on the display device such as brightness are not capture, no should they be as this would make the image specific to a single user with their specific device settings making the image look different on every single device it is displayed on. The goal of manufacturers is to set a display device up so that it displays data in a way that adheres to a specification. The image is then captured in a format that also adheres to a spec, such as sRGB. If this is done accurately then the captured image should look the same on any display device. The image is then saved in a format that tells others what specification it is adhering to. That information is saved inside files such as jpg.

However, taking an exact "grab" of the data sitting on the GPU will not necessarily produce good results and most programs will modify it in some way such as to do some anti-aliasing. It must also be reformatted to match the spec of a image format. An HDR image may need to be converted to SDR if it is going to be saved to a jpg for example. Screen grab software, whether it is part a game engine, or a separate piece of software often have settings that allow the image to be modified as well.

The exact technical details are going to differ between programs and even between graphics API's. DirectX will be different from OpenGL.

---

Fundamentally, modern GPU's adhere to a specification and the data coming out of the GPU is formatted to that spec. The two most popular spec's are HDMI and DisplayPort. The Display Device sends EDID (Extended Display Identification Data) to the GPU as part of that protocol. This tells the GPU some limited information about the display device. The GPU "remembers" this information but may not set aside an exact one-to-one mapping of pixel data, there is a buffer, but don't lock your thinking into anything like "oh there must be a one to one mapping there". The GPU is free to set aside any size chunk it so pleases and individual manufactures may have different ideas on what the correct amount of data to set aside is.

When it is time to transmit the data, as agreed on by the protocol, that buffer is converted to the connection format such as HDMI. Once the data is converted and sent out over the wires using that protocol the GPU looses interest and it is up to the display device to convert the HDMI data to a displayable format. This is where the settings on the monitor come into play, brightness, color space, and all the other settings on the monitor are applied to the image that has been decoded from the HDMI format to whatever internal format the device needs to display the data.

> **Comments:**
> **username_0**: so screenshot does not contain any detail related to the screen. can you tell me what kind of different operations GPU performed on the data before storing that data in the framebuffer?  One more thing i have read somewhere that framebuffer contain data that can correctly displayed on the monitor according to the monitor resolution. Therefore, if the pixel mapping is required that also has been done by the GPU on the data. Can you share details about that, how the mapping is done?  
> **username_1**: The kinds of operations that can be performed on data by the GPU is **vast** since the GPU can be programmed. GPU's have a programming language and we can write programs that operate on data sitting in the GPU before sending it off for display. I added a bit to my answer about "mapping display data" between the GPU and the display device.  

---

