workingmailing@163.com wrote:
Another question:
frame buffer is located in system memory, not graphic memory?
For the KMDOD driver, yes.
Look, you are making exactly the mistake I warned about earlier in the
thread. You are assuming there is one master copy of a desktop image
somewhere in some graphics memory somewhere, and that all of your
monitors magically pull their displays from that master desktop image.
That is simply not the case.
If you have 4 monitors, you might have 4 different graphics adapters.
Each of those graphics adapters has its own frame buffer, separate from
all the rest. That frame buffer contains an image of ITS SECTION of the
desktop.
When a graphics command comes in, the system looks at the command to see
which of the graphics drivers will be affected by that command. Most
windows only live on one monitor, but you can certainly have one window
span multiple monitors. The system then sends that graphics command
down to EACH of the drivers that will be affected.
If you have two monitors that are echoing each other, then you have TWO
SEPARATE FRAME BUFFERS, each with an independent copy of the desktop.
Every drawing command gets done twice.
Your KMDOD driver gets put into that list as well. If your KMDOD driver
is echoing the entire desktop, then every drawing command that goes to
one of the real graphics adapters will also be sent to your driver.
Your driver is then responsible to do that drawing in its own copy of
the frame buffer, and then send it to wherever the result needs to go.
You aren’t “borrowing” someone else’s frame buffer. You have your very
own frame buffer, that YOU are maintaining (with the help of the
kernel). The images you send to your hardware come from your own
private frame buffer.
so in normal case, desktop data is fetch from system memory to graphic memory, then display take place by adapter?
I can’t tell what you are asking. In the normal case, with one graphics
adapter and one monitor, the drawing commands get send to the graphics
chip, which makes changes in its own frame buffer.
in this sample, who is responsible for fill the frame buffer?
KMDOD. That’s exactly what a “display driver” does.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.