WDDM based virtual graphics driver

Hi ,

I need to implement virtual graphics driver (need to emulate multiple monitors) for Windows 7 platform? with hardware acceleration support.

As per my understanding, WDDM based virtual display driver should achieve the functionality.

But I read in some of the threads that WDDM based mirror driver and virtual driver are not possible. For these type of drivers I have to rely on XPDDM based architecture. Also there is no sample code available for WDDM based virtual display driver…

Please confirm my understanding. I am at the design phase and your inputs will be really valuable.

Thanks
Anshul Makkar

> Also there is no sample code available for WDDM based virtual display driver…

If you look in the Vista WDK (6000) there is a sample WDDM driver for the ATI R200 graphics card.

Regards,
Tim.

anshul makkar wrote:

I need to implement virtual graphics driver (need to emulate multiple
monitors) for Windows 7 platform with hardware acceleration support.

I’m not sure what you mean by “emulate multiple monitors”. Windows 7
now supports multiple WDDM adapters in a single machine. No emulation
should be necessary.

As per my understanding, WDDM based virtual display driver should
achieve the functionality.

Theoretically, yes, if such a thing existed. It does not.

But I read in some of the threads that WDDM based mirror driver and
virtual driver are not possible. For these type of drivers I have to
rely on XPDDM based architecture. Also there is no sample code
available for WDDM based virtual display driver…

Please confirm my understanding. I am at the design phase and your
inputs will be really valuable.

You are correct. A virtual WDDM driver is not possible today, using
supported techniques. WDDM requires hardware. There are companies that
have done WDDM virtualization, by hooking the existing drivers, but
that’s unsupported and very delicate.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Hi

Thanks for the replies.

“emulate multiple monitors” means, creating multiple virtual drawing area using virtual display driver which will act as secondary monitors. Basically emulating multiple graphics adapter.( we can execute the application on virtual display area 1 (virtual monitor 1 ) or virtual area 2 (monitor 2) .? I want to replicate the extended monitor display functionality

In XPPDDM , we can create a virtual graphics driver/adapter that acted as secondary monitor. It was irrespective of the actual underlying hardware/graphics adapter and used to simultaneously exist with the actual graphics driver.

Now my requirement is to implement similar thing using WDDM , where virtual WDDM driver coexists along with actual driver and provide support for multiple secondary monitors.

Thanks
Anshul Makkar
www.justkernel.com

–f- On Mon, 25/7/11, Tim Roberts wrote:

From: Tim Roberts
Subject: Re: [ntdev] WDDM based virtual graphics driver
To: “Windows System Software Devs Interest List”
Date: Monday, 25 July, 2011, 10:32 PM

anshul makkar wrote:
>
> I need to implement virtual graphics driver (need to emulate multiple
> monitors) for Windows 7 platform? with hardware acceleration support.
>

I’m not sure what you mean by “emulate multiple monitors”.? Windows 7
now supports multiple WDDM adapters in a single machine.? No emulation
should be necessary.

> As per my understanding, WDDM based virtual display driver should
> achieve the functionality.
>

Theoretically, yes, if such a thing existed.? It does not.

> But I read in some of the threads that WDDM based mirror driver and
> virtual driver are not possible. For these type of drivers I have to
> rely on XPDDM based architecture. Also there is no sample code
> available for WDDM based virtual display driver…
>
> Please confirm my understanding. I am at the design phase and your
> inputs will be really valuable.
>

You are correct.? A virtual WDDM driver is not possible today, using
supported techniques.? WDDM requires hardware.? There are companies that
have done WDDM virtualization, by hooking the existing drivers, but
that’s unsupported and very delicate.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

anshul makkar wrote:

“emulate multiple monitors” means, creating multiple virtual drawing
area using virtual display driver which will act as secondary
monitors. Basically emulating multiple graphics adapter.( we can
execute the application on virtual display area 1 (virtual monitor 1 )
or virtual area 2 (monitor 2) . I want to replicate the extended
monitor display functionality

Well, you’re not really replicating anything. Windows 7 already has the
multiple monitor plumbing. What you want to do is create one or more
virtual monitors, and have Windows extend the desktop onto those
monitors. That’s not possible with WDDM, using the supported
mechanism. WDDM wants hardware.

In XPPDDM , we can create a virtual graphics driver/adapter that acted
as secondary monitor. It was irrespective of the actual underlying
hardware/graphics adapter and used to simultaneously exist with the
actual graphics driver.

I hate the phrase “THE actual underlying hardware”, because it leaves
the implication that there can only be one graphics adapter. To be
accurate, your virtual graphics driver did not have any underlying
hardware. That was possible with XPDM. It’s not with WDDM.

Now, there are certainly companies that have done this sort of thing.
DisplayLink is one. They are using a trickery and black magic, by
hooking an existing WDDM driver, and fooling it into thinking there is
another monitor attached. That way, they even get a certain amount of
hardware acceleration. However, that’s all unsupported.

Now my requirement is to implement similar thing using WDDM , where
virtual WDDM driver coexists along with actual driver and provide
support for multiple secondary monitors.

Good luck. Until Microsoft provides the plumbing to support this, you
are driving in the dark with no headlights and no roadmap.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Thanks TIm for the explaination…
?
Anshul Makkar
www.justkernel.com

— On Mon, 25/7/11, Tim Roberts wrote:

From: Tim Roberts
Subject: Re: [ntdev] WDDM based virtual graphics driver
To: “Windows System Software Devs Interest List”
Date: Monday, 25 July, 2011, 11:10 PM

anshul makkar wrote:
>
> “emulate multiple monitors” means, creating multiple virtual drawing
> area using virtual display driver which will act as secondary
> monitors. Basically emulating multiple graphics adapter.( we can
> execute the application on virtual display area 1 (virtual monitor 1 )
> or virtual area 2 (monitor 2) .? I want to replicate the extended
> monitor display functionality
>

Well, you’re not really replicating anything.? Windows 7 already has the
multiple monitor plumbing.? What you want to do is create one or more
virtual monitors, and have Windows extend the desktop onto those
monitors.? That’s not possible with WDDM, using the supported
mechanism.? WDDM wants hardware.

> In XPPDDM , we can create a virtual graphics driver/adapter that acted
> as secondary monitor. It was irrespective of the actual underlying
> hardware/graphics adapter and used to simultaneously exist with the
> actual graphics driver.
>

I hate the phrase “THE actual underlying hardware”, because it leaves
the implication that there can only be one graphics adapter.? To be
accurate, your virtual graphics driver did not have any underlying
hardware.? That was possible with XPDM.? It’s not with WDDM.

Now, there are certainly companies that have done this sort of thing.
DisplayLink is one.? They are using a trickery and black magic, by
hooking an existing WDDM driver, and fooling it into thinking there is
another monitor attached.? That way, they even get a certain amount of
hardware acceleration.? However, that’s all unsupported.

> Now my requirement is to implement similar thing using WDDM , where
> virtual WDDM driver coexists along with actual driver and provide
> support for multiple secondary monitors.
>

Good luck.? Until Microsoft provides the plumbing to support this, you
are driving in the dark with no headlights and no roadmap.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Maybe the VirtualBox www.virtualbox.org can help you. It’s an opensource project of ORACLE.
Good luck. MarshallDate: Tue, 26 Jul 2011 07:14:41 +0530
From: xxxxx@justkernel.com
Subject: Re: [ntdev] WDDM based virtual graphics driver
To: xxxxx@lists.osr.com

Thanks TIm for the explaination…

Anshul Makkar
www.justkernel.com

— On Mon, 25/7/11, Tim Roberts wrote:

From: Tim Roberts
Subject: Re: [ntdev] WDDM based virtual graphics driver
To: “Windows System Software Devs Interest List”
Date: Monday, 25 July, 2011, 11:10 PM

anshul makkar wrote:
>
> “emulate multiple monitors” means, creating multiple virtual drawing
> area using virtual display driver which will act as secondary
> monitors. Basically emulating multiple graphics adapter.( we can
> execute the application on virtual display area 1 (virtual monitor 1 )
> or virtual area 2 (monitor 2) . I want to replicate the extended
> monitor display functionality
>

Well, you’re not really replicating anything. Windows 7 already has the
multiple monitor plumbing. What you want to do is create one or more
virtual monitors, and have Windows extend the desktop onto those
monitors. That’s not possible with WDDM, using the supported
mechanism. WDDM wants hardware.

> In XPPDDM , we can create a virtual graphics driver/adapter that acted
> as secondary monitor. It was irrespective of the actual
underlying
> hardware/graphics adapter and used to simultaneously exist with the
> actual graphics driver.
>

I hate the phrase “THE actual underlying hardware”, because it leaves
the implication that there can only be one graphics adapter. To be
accurate, your virtual graphics driver did not have any underlying
hardware. That was possible with XPDM. It’s not with WDDM.

Now, there are certainly companies that have done this sort of thing.
DisplayLink is one. They are using a trickery and black magic, by
hooking an existing WDDM driver, and fooling it into thinking there is
another monitor attached. That way, they even get a certain amount of
hardware acceleration. However, that’s all unsupported.

> Now my requirement is to implement similar thing using WDDM , where
> virtual WDDM driver coexists along with actual driver and provide
> support
for multiple secondary monitors.
>

Good luck. Until Microsoft provides the plumbing to support this, you
are driving in the dark with no headlights and no roadmap.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

> supported techniques. WDDM requires hardware.

IIRC this is only because WDDM requires hardware surfaces, where pixels are accessible by pointers.

In this case, it should be possible to do a) WDDM over another WDDM b) WDDM over in-memory surface which will then be transferred to the display machine like VNC does.


Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com