none
Writing a software-only virtual display device RRS feed

  • Question

  • I want to create a virtual (software only) display.  (One or more, actually, and it would be nice if it were dynamically configurable).  I want my virtual display to appear as a display in the Screen Resolution dialog, and I want to be able to use it as part of my desktop.

    Display Screen Resolution

    Ultimately, I want to do some processing on the raw display commands that are issued to my virtual display device and send information out to a few devices on the network.

    Here's a bit more info:  I have a range of features that I'd like to implement (not all of which am I willing to disclose here) but one basic feature would be to simulate the frame-buffer in memory, compress it, and send it out over the network to another device that would display it.  Although what I eventually want to do is quite a bit more sophisticated than that, this is the basics of what I'd need to achieve in version 1.  If I can do that, then I have created the right kind of software.

    Obviously, ideally I'd like to write as much of this as possible in user mode code.  In a perfect world, I would target Windows 7, but if something's vastly easier in Windows 8, then I'd be willing to discuss it.

    I'd like to leave the door open to eventually support some level of hardware acceleration too.  It's important that (eventually) applications that take advantage of Direct3D, OpenGL, video playback, etc. all continue to operate normally.  (I realize that performance will be a huge issue.)

    I've written a device driver or two in my day, albeit for much older versions of Windows, and I'm pretty familiar with the essentials of Windows architecture.  For example, I think I'm up to speed on most of the information in Roadmap for Developing Drivers for the Windows Vista Display Driver Model (WDDM) and it left me feeling like some basic questions were still unanswered.

    What should I be writing to achieve this?

    Can anyone provide some guidance to get me started in the right direction?


    • Edited by Wyck Thursday, February 6, 2014 4:39 PM bogus alt text for image corrupted this post. I'll be posting a bug for that.
    Thursday, February 6, 2014 4:36 PM

Answers

  • Personally, having known teams that worked with that, I would talk to Microsoft and license RDP from them.  I am assuming this is a real project for a firm, not a lets do something need on the side, because this is a huge project, that will take a very long time.


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr

    Thursday, February 6, 2014 7:20 PM

All replies

  • Unfortunately, there is no equivalent for WDDM of the mirror driver sample that was in the WDK through Win7.  You may want to find the Win7 WDK and look at the older display driver documentation and see if it gives you inspiration.

    Perhaps a better first question, is what is the ultimate goal?  Display drivers are some of the hardest to do of Windows, so what goal do you have in mind?


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr

    Thursday, February 6, 2014 4:44 PM
  • The ultimate goal is that everything that Windows says to do to a display arrives at my software in the form of raw graphics API commands.  I then do some processing to the bitmaps, and raw hardware accelerated API commands, then communicate those to one or more devices over the network that will render them remotely.

    I suppose the closest technology would be something like "network projector" or the RDPDD for remote desktop.  But a little more hard-core than just a mirror driver.  I will eventually support some hardware acceleration features.

    Thursday, February 6, 2014 6:01 PM
  • Personally, having known teams that worked with that, I would talk to Microsoft and license RDP from them.  I am assuming this is a real project for a firm, not a lets do something need on the side, because this is a huge project, that will take a very long time.


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr

    Thursday, February 6, 2014 7:20 PM
  • That was an unsatisfying response.

    But I guess the constructive parts that I'll take away are that you think I should be partnering with Microsoft to achieve what I want to do and that I won't find help in the community for writing display drivers.

    Friday, February 7, 2014 3:01 PM
  • Well, there are teams at AMD (formerly ATI) and NVIDIA who write display drivers.  The total team is roughly 200 people (hardware, microcode, and drivers) and a very significant portion of that is the driver writers.

    You may be able to find help, but to do a good job is a 10's of man-years effort without licensing Microsoft technologies.  I know of 3 firms in New England that tried doing this, and bleed there investors dry.


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr

    Friday, February 7, 2014 3:21 PM
  • Last i heard you are off by an order if magnitude, the display software teams are in the 1,000s

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Friday, February 7, 2014 3:25 PM
  • Doron,

         You may be right.  The last time I knew people in the teams was a number of years ago, and they were all leaving being tired of being a face in a crowd.


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr

    Friday, February 7, 2014 3:27 PM