WDDM. Regarding VidPn Concept

Hi All

I have just started Windows Display Driver Model. I am not able to get my
head around the whole VidPn concept. To be honest I am quite new in the
display driver domain but I do have the knowledge of WDM and other general
Windows OS concepts.

The DDK explanation of the whole VidPn thing seems quite abstract to me. I
need a mode straight forward explanation of things like mode sets and what
exactly all the VidPn related DRIVER_INITIALIZATION_DATA miniport callbacks
do. In particular, I already have the miniport driver and I was trying to
figure out the the code flow on setting a particular resolution from the
“Screen Resolution” property page.

Also a few other things:

  1. What is a mode in Windows jargon. Is it same as resolution + refresh
    rate combo

2)What exactly are surfaces. I know frame buffers. Is there any distinction
between surfaces and frame buffers and how many surfaces can coexist at any
time.

  1. What are primary surfaces or primaries.

Thanks in Advance

sanjeev wrote:

I have just started Windows Display Driver Model. I am not able to get
my head around the whole VidPn concept. To be honest I am quite new in
the display driver domain but I do have the knowledge of WDM and other
general Windows OS concepts.

Unfortunately, there are a rather small number of WDDM experts in the
world. Virtually all of them work for one of the 3 or 4 important
graphics chip vendors, and I’m not sure any of them participate in this
forum (nor ANY forum). If you’re serious about doing a WDDM driver, it
would be worthwhile for your company to try to establish a relationship
with the Microsoft WDDM team. It’s not clear to me that it is possible
to develop a complete WDDM driver without that.

I used to be an XPDM hotshot. I tried to keep up with WDDM, but that
train has left the station for Poughkeepsie, and I’m not on it.

The DDK explanation of the whole VidPn thing seems quite abstract to
me. I need a mode straight forward explanation of things like mode
sets and what exactly all the VidPn related DRIVER_INITIALIZATION_DATA
miniport callbacks do. In particular, I already have the miniport
driver and I was trying to figure out the the code flow on setting a
particular resolution from the “Screen Resolution” property page.

The whole VidPn thing IS extremely abstract. You have “video present
sources”, which are the drawing surfaces that a graphics adapter
supports. You have “video present targets”, which are the various ways
graphics data can leave the adapter (VGA plug, HDMI, DVI, USB). Both of
those have a set of formats (in different universes), and there is a
list of which sources and source formats can be connected to which
targets and target formats. That WHOLE MESS comprises the “video
present network”. Here’s a quote from me in a 2009 conversation on the
topic:

I don’t know whether you’ve every read the “video present network”
documentation from the point of view
of a relative newcomer, but it is as impenetrable as any technical
document I’ve ever read.

Ivan Brugiolo, a Microsoft employee who used to be in the graphics team,
has probably been the most useful source of information about VidPn.
You might search for threads on WDDM with his name, plus take the time
to read through this entire exchange (which includes my quote above):

https://groups.google.com/forum/#!msg/microsoft.public.development.device.drivers/P47HTcoZNsc/fPcHeOVOL0UJ

  1. What is a mode in Windows jargon. Is it same as resolution +
    refresh rate combo

Yes, resolution, depth and timing. This jargon comes from the graphics
chips. The CGA/EGA/VGA had various text and graphics “modes” that were
established by setting registers. This terminology has carried forward.

2)What exactly are surfaces. I know frame buffers. Is there any
distinction between surfaces and frame buffers and how many surfaces
can coexist at any time.

A surface is just something that can be drawn upon. A frame buffer is a
surface, but so is a memory bitmap.

  1. What are primary surfaces or primaries.

The primary surface is just a surface that is part of the user’s visible
desktop.


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

As others pointed, there is not much WDDM relate documents and ,even worse, these are scattered.
MDSN docs, PPTs from any MS Build or previous conferences and some docs from GPUView are helpful to you.
And, some terminologies would be useful when you check DirectX related docs, too.

HTH.
Woojung

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of sanjeev
Sent: Thursday, January 17, 2013 6:52 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] WDDM. Regarding VidPn Concept

Hi All

I have just started Windows Display Driver Model. I am not able to get my head around the whole VidPn concept. To be honest I am quite new in the display driver domain but I do have the knowledge of WDM and other general Windows OS concepts.

The DDK explanation of the whole VidPn thing seems quite abstract to me. I need a mode straight forward explanation of things like mode sets and what exactly all the VidPn related DRIVER_INITIALIZATION_DATA miniport callbacks do. In particular, I already have the miniport driver and I was trying to figure out the the code flow on setting a particular resolution from the “Screen Resolution” property page.

Also a few other things:

  1. What is a mode in Windows jargon. Is it same as resolution + refresh rate combo

2)What exactly are surfaces. I know frame buffers. Is there any distinction between surfaces and frame buffers and how many surfaces can coexist at any time.

  1. What are primary surfaces or primaries.

Thanks in Advance

— NTDEV is sponsored by OSR OSR is HIRING!! See http://www.osr.com/careers 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

These questions are too general to be answered here. Mabye a few (highly simplified) short answers below can help a bit:

  1. Modes: WDDM VidPn model includes a very extensive definition of modes. First, it is necessary to distinguish, which modes to talk about. There are “Monitor Modes” (monitor), VidPn “Target Modes” (connector) and VidPn “Source Modes” (view).

  2. Surfaces are rather a Direct3D concept than WDDM. WDDM is based on the concept of “Allocations” and “Resources” (which can contain multiple Allocations). Resources/Allocations can reside in “Video Memory” (PCI on-board) or in “System Memory”. WDDM Video Memory Manager keeps moving them around between different locations. WDDM does not have the concept of a “Frame Buffer”. If you want to relate to a “Frame BUffer”, you could could consider it “the Allocation that is currently shown on the display”.

  3. Primaries are Allocations which can be shown on the display. To be shown, the Allocation needs to be associated with a “Video Present Source” (View). DxgkDdiSetVidPnSourceAddress()

Hope, I havent gotten anything wrong or oversimplified in the short time I had to answer this…

Marcel Ruedinger
datronicsoft

Actually there is a small ray of light in this area. The Kernel Mode
Display Only Driver has a functional VidPn implementation, although it is
short circuited to one display. It can be used as a basis for implementing
a functional M-N VidPn component of a WDDM driver.

Mark Roddy

On Thu, Jan 17, 2013 at 2:02 PM, Woojung Huh wrote:

> As others pointed, there is not much WDDM relate documents and ,even
> worse, these are scattered.
>
> MDSN docs, PPTs from any MS Build or previous conferences and some docs
> from GPUView are helpful to you.

>
> And, some terminologies would be useful when you check DirectX related
> docs, too.
>
>

>
> HTH.

>
> Woojung
>
>

>
> From: xxxxx@lists.osr.com [mailto:
> xxxxx@lists.osr.com] On Behalf Of sanjeev
> Sent: Thursday, January 17, 2013 6:52 AM
> To: Windows System Software Devs Interest List
> Subject: [ntdev] WDDM. Regarding VidPn Concept

>
> ****
>
> Hi All
>
>

>
> I have just started Windows Display Driver Model. I am not able to get my
> head around the whole VidPn concept. To be honest I am quite new in the
> display driver domain but I do have the knowledge of WDM and other general
> Windows OS concepts.

>
> ****
>
> The DDK explanation of the whole VidPn thing seems quite abstract to me. I
> need a mode straight forward explanation of things like mode sets and what
> exactly all the VidPn related DRIVER_INITIALIZATION_DATA miniport callbacks
> do. In particular, I already have the miniport driver and I was trying to
> figure out the the code flow on setting a particular resolution from the
> “Screen Resolution” property page.
>
>

>
> Also a few other things:

>
> ****
>
> 1) What is a mode in Windows jargon. Is it same as resolution + refresh
> rate combo
>
>
**
>
> 2)What exactly are surfaces. I know frame buffers. Is there any
> distinction between surfaces and frame buffers and how many surfaces can
> coexist at any time.

>
> ****
>
> 3) What are primary surfaces or primaries.
>
>

>
> Thanks in Advance

>
> ****
>
> — NTDEV is sponsored by OSR OSR is HIRING!! See
> http://www.osr.com/careers 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
>
> OSR is HIRING!! See http://www.osr.com/careers
>
> 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
>

Thanks everyone. Tim you are helpful as always.

Marcel so how does someone just starting off with WDDM find an elaborate
definition of what a VidPn mode set is if DDK doesn’t have it. The whole
jargon related to VidPn is quite terse. I thought it perhaps was just me
who was lacking sufficient brain cells to get it. But I see others having
similar opinion as well.

I would like to know that when a resolution is set by the user, say
1360x768, what are the miniport callbacks that are called, the order in
which they are called and what exactly each one of them do. How and in what
form this “1360x768” is conveyed to the miniport. I have a rough idea after
reading the DDK but I am not able to know exactly what happens where. I
initially thought it would be happening via something like IOCTLs.

Also I’d like to know what pinning a mode means and what exactly it is a
pivot.

I know these are a barrage of questions and some of them might need an
elaborate explanation. Well I am all ears : )

On Sun, Jan 20, 2013 at 4:02 AM, Mark Roddy wrote:

> Actually there is a small ray of light in this area. The Kernel Mode
> Display Only Driver has a functional VidPn implementation, although it is
> short circuited to one display. It can be used as a basis for implementing
> a functional M-N VidPn component of a WDDM driver.
>
>
> Mark Roddy
>
>
> On Thu, Jan 17, 2013 at 2:02 PM, Woojung Huh wrote:
>
>> As others pointed, there is not much WDDM relate documents and ,even
>> worse, these are scattered.
>>
>> MDSN docs, PPTs from any MS Build or previous conferences and some docs
>> from GPUView are helpful to you.

>>
>> And, some terminologies would be useful when you check DirectX related
>> docs, too.
>>
>>

>>
>> HTH.

>>
>> Woojung
>>
>>

>>
>> From: xxxxx@lists.osr.com [mailto:
>> xxxxx@lists.osr.com] On Behalf Of sanjeev
>> Sent: Thursday, January 17, 2013 6:52 AM
>> To: Windows System Software Devs Interest List
>> Subject: [ntdev] WDDM. Regarding VidPn Concept

>>
>> ****
>>
>> Hi All
>>
>>

>>
>> I have just started Windows Display Driver Model. I am not able to get my
>> head around the whole VidPn concept. To be honest I am quite new in the
>> display driver domain but I do have the knowledge of WDM and other general
>> Windows OS concepts.

>>
>> ****
>>
>> The DDK explanation of the whole VidPn thing seems quite abstract to me.
>> I need a mode straight forward explanation of things like mode sets and
>> what exactly all the VidPn related DRIVER_INITIALIZATION_DATA miniport
>> callbacks do. In particular, I already have the miniport driver and I was
>> trying to figure out the the code flow on setting a particular resolution
>> from the “Screen Resolution” property page.
>>
>>

>>
>> Also a few other things:

>>
>> ****
>>
>> 1) What is a mode in Windows jargon. Is it same as resolution + refresh
>> rate combo
>>
>>
**
>>
>> 2)What exactly are surfaces. I know frame buffers. Is there any
>> distinction between surfaces and frame buffers and how many surfaces can
>> coexist at any time.

>>
>> ****
>>
>> 3) What are primary surfaces or primaries.
>>
>>

>>
>> Thanks in Advance

>>
>> ****
>>
>> — NTDEV is sponsored by OSR OSR is HIRING!! See
>> http://www.osr.com/careers 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
>>
>> OSR is HIRING!! See http://www.osr.com/careers
>>
>> 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 OSR is HIRING!! See
> http://www.osr.com/careers 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
>

I believe there was Vista ATI sample driver on WDK 6.0.
You may be able to buy working ATI video card with old-spec PC on eBay.
It may be a good playground for WDDM, even though WDDM 1.0, if you keep moving on WDDM field.


From: xxxxx@lists.osr.com [xxxxx@lists.osr.com] on behalf of sanjeev [xxxxx@gmail.com]
Sent: Saturday, January 19, 2013 11:15 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] WDDM. Regarding VidPn Concept

Thanks everyone. Tim you are helpful as always.

Marcel so how does someone just starting off with WDDM find an elaborate definition of what a VidPn mode set is if DDK doesn’t have it. The whole jargon related to VidPn is quite terse. I thought it perhaps was just me who was lacking sufficient brain cells to get it. But I see others having similar opinion as well.

I would like to know that when a resolution is set by the user, say 1360x768, what are the miniport callbacks that are called, the order in which they are called and what exactly each one of them do. How and in what form this “1360x768” is conveyed to the miniport. I have a rough idea after reading the DDK but I am not able to know exactly what happens where. I initially thought it would be happening via something like IOCTLs.

Also I’d like to know what pinning a mode means and what exactly it is a pivot.

I know these are a barrage of questions and some of them might need an elaborate explanation. Well I am all ears : )

On Sun, Jan 20, 2013 at 4:02 AM, Mark Roddy > wrote:
Actually there is a small ray of light in this area. The Kernel Mode Display Only Driver has a functional VidPn implementation, although it is short circuited to one display. It can be used as a basis for implementing a functional M-N VidPn component of a WDDM driver.

Mark Roddy

On Thu, Jan 17, 2013 at 2:02 PM, Woojung Huh > wrote:
As others pointed, there is not much WDDM relate documents and ,even worse, these are scattered.
MDSN docs, PPTs from any MS Build or previous conferences and some docs from GPUView are helpful to you.
And, some terminologies would be useful when you check DirectX related docs, too.

HTH.
Woojung

From: xxxxx@lists.osr.commailto:xxxxx [mailto:xxxxx@lists.osr.commailto:xxxxx] On Behalf Of sanjeev
Sent: Thursday, January 17, 2013 6:52 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] WDDM. Regarding VidPn Concept

Hi All

I have just started Windows Display Driver Model. I am not able to get my head around the whole VidPn concept. To be honest I am quite new in the display driver domain but I do have the knowledge of WDM and other general Windows OS concepts.

The DDK explanation of the whole VidPn thing seems quite abstract to me. I need a mode straight forward explanation of things like mode sets and what exactly all the VidPn related DRIVER_INITIALIZATION_DATA miniport callbacks do. In particular, I already have the miniport driver and I was trying to figure out the the code flow on setting a particular resolution from the “Screen Resolution” property page.

Also a few other things:

1) What is a mode in Windows jargon. Is it same as resolution + refresh rate combo

2)What exactly are surfaces. I know frame buffers. Is there any distinction between surfaces and frame buffers and how many surfaces can coexist at any time.

3) What are primary surfaces or primaries.

Thanks in Advance

— NTDEV is sponsored by OSR OSR is HIRING!! See http://www.osr.com/careers 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

OSR is HIRING!! See http://www.osr.com/careers

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 OSR is HIRING!! See http://www.osr.com/careers 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 OSR is HIRING!! See http://www.osr.com/careers 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</mailto:xxxxx></mailto:xxxxx>

Again these questions are too generic/unspecific. Again a few (simplified) short answers which may help a bit:

How to get started with WDDM? Since you indicate availability of working miniport code: Trace the code and read the documentation! It is all documented (minimalistic, but formally correct and complete). You seem to be one of the lucky few having working code…

Others typically find it difficult because nobody has sample code AND the documentation is minimalistic. Only the missing template makes WDDM so hard. FYI: The above mentioned ancient DDK WDDM sample is 95% ATI binary code libraries and only 5% source (irrelevant infrastructure code). Then it is based on AGP which is out of date and handled differently by WDDM. Thus this WDK “binary sample” even misses relevant parts of Video Memory Management.

With reasonable samples or working code, mastering WDDM is not problematic (sure it is not easy - but driver devlopment never is). It is definitely possible to write a full WDDM driver from scratch without any help from Microsoft - we have done it.

Simplified short answers to your other generic questions:

Resolutions are set by CCD API (not IOCTLs). There is no exact call sequence. The exact miniport callbacks and their exact sequence depend on the specific implementation of the calling CCD API application. Typical call sequences are:

  1. For determining/showing available settings
    (e.g. Display Control Panel Applet being opened):
    Many repeated calls to the DDIs below (resolutions, additional monitor, desktop extension, desktop duplication, rotation, scaling, etc).
  • DxgkDdiIsSupportedVidPn()
  • DxgkDdiEnumVidPnCofuncModality()
  1. For changing settings
    (imaginary simplified call sequence):
  • DxgkDdiSetVidPnSourceVisibility(FALSE) - turn off monitors.
  • DxgkDdiCommitVidPn() - apply new topology (including new settings).
  • DxgkDdiSetVidPnSourceAddress() - see my previous post.
  • DxgkDdiSetVidPnSourceVisibility(TRUE) - show new Allocation content on monitor.
    or
  • DxgkDdiUpdateActiveVidPnPresentPath()

Pivot and “Pinned Modes” D3DKMDT_ENUMCOFUNCMODALITY_PIVOT_TYPE are important during DxgkDdiEnumVidPnCofuncModality(). VidPn Manager asks the miniport to complete a “half complete” VidPn Topology (turn a “supported” VidPn into a “functional” one - it is all documented…). When doing this, the Pivot should not be touched by the miniport. VidPn Manager wants to have exactly these values in the VidPn Topology and wants to know from the miniport which other values go along well.

Hope, I havent gotten anything wrong or oversimplified in the short time I had
to answer this…

Marcel Ruedinger
datronicsoft

>

FYI: The above mentioned ancient DDK WDDM sample is 95% ATI binary code
libraries and only 5% source (irrelevant infrastructure code).

I was one of many contributors to the sample. I’m sure you don’t want to
see the rest of it. It’s not that helpful.

Calvin Guan
Sent from my PC on WIN8

sanjeev wrote:

Marcel so how does someone just starting off with WDDM find an
elaborate definition of what a VidPn mode set is if DDK doesn’t have it.

If you have access to a Microsoft contact, you get more sample code and
probably a few Powerpoint slide decks. If not, then the answer is “on
the job training”. Single stepping in a debugger. Watching what gets
called and what gets passed. It’s painful.

The Vista WDK contains a partial WDDM sample for the ATI R200 in
src\video\R200Sample.

I would like to know that when a resolution is set by the user, say
1360x768, what are the miniport callbacks that are called, the order
in which they are called and what exactly each one of them do. How and
in what form this “1360x768” is conveyed to the miniport. I have a
rough idea after reading the DDK but I am not able to know exactly
what happens where. I initially thought it would be happening via
something like IOCTLs.

In WDDM, the display driver interface is all function calls. The
DriverEntry returns a structure with a list of 60 or 70 function
pointers (see
http://msdn.microsoft.com/en-us/library/windows/hardware/ff566463.aspx
). You don’t just “set a mode”. The driver advertises which modes are
available for various surface and output cable combinations. The
display system configures those based on the user choices.
DxgkDdiSetVidPnSourceVisibility is the DDI that makes a given
combination visible. In the R200 sample, that’s where the mode gets set
in the hardware.

Also I’d like to know what pinning a mode means and what exactly it is
a pivot.

The “pinned mode” is the desired mode for a particular source or
target. It’s not necessary the current mode – when changing modes, the
next desired mode gets pinned to the endpoint, and then the pinned
selections are all committed.

http://msdn.microsoft.com/en-us/library/windows/hardware/ff570543.aspx

Roughly speaking, a pivot is a way to allow the current mode to be
modified by rotation or scaling. Sometimes the monitor is involved in
that, and something the graphics chip is involved with that, so it’s a
complicated topic.

I know these are a barrage of questions and some of them might need an
elaborate explanation. Well I am all ears : )

As I said, I don’t think there is anyone left who can and is allowed to
give you “an elaborate explanation”. It is essentially impossible to
get started in WDDM today without going to work for one of the companies
already doing WDDM drivers.


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

I’ll try one more time. The Win8 WDK has a fully functional sample WDDM
kernel mode driver that contains a fully functional VidPn implementation. I
have no idea why anyone would be discussing the deprecated and deleted
Vista ATI sample when a current supported functional sample is available.

Here:
http://code.msdn.microsoft.com/windowshardware/Kernel-mode-display-only-49adea58

Functioning code that implements a VidPn.

Mark Roddy

On Mon, Jan 21, 2013 at 2:16 PM, Tim Roberts wrote:

> sanjeev wrote:
> >
> > Marcel so how does someone just starting off with WDDM find an
> > elaborate definition of what a VidPn mode set is if DDK doesn’t have it.
>
> If you have access to a Microsoft contact, you get more sample code and
> probably a few Powerpoint slide decks. If not, then the answer is “on
> the job training”. Single stepping in a debugger. Watching what gets
> called and what gets passed. It’s painful.
>
> The Vista WDK contains a partial WDDM sample for the ATI R200 in
> src\video\R200Sample.
>
>
> > I would like to know that when a resolution is set by the user, say
> > 1360x768, what are the miniport callbacks that are called, the order
> > in which they are called and what exactly each one of them do. How and
> > in what form this “1360x768” is conveyed to the miniport. I have a
> > rough idea after reading the DDK but I am not able to know exactly
> > what happens where. I initially thought it would be happening via
> > something like IOCTLs.
>
> In WDDM, the display driver interface is all function calls. The
> DriverEntry returns a structure with a list of 60 or 70 function
> pointers (see
> http://msdn.microsoft.com/en-us/library/windows/hardware/ff566463.aspx
> ). You don’t just “set a mode”. The driver advertises which modes are
> available for various surface and output cable combinations. The
> display system configures those based on the user choices.
> DxgkDdiSetVidPnSourceVisibility is the DDI that makes a given
> combination visible. In the R200 sample, that’s where the mode gets set
> in the hardware.
>
>
> > Also I’d like to know what pinning a mode means and what exactly it is
> > a pivot.
>
> The “pinned mode” is the desired mode for a particular source or
> target. It’s not necessary the current mode – when changing modes, the
> next desired mode gets pinned to the endpoint, and then the pinned
> selections are all committed.
>
> http://msdn.microsoft.com/en-us/library/windows/hardware/ff570543.aspx
>
> Roughly speaking, a pivot is a way to allow the current mode to be
> modified by rotation or scaling. Sometimes the monitor is involved in
> that, and something the graphics chip is involved with that, so it’s a
> complicated topic.
>
>
> > I know these are a barrage of questions and some of them might need an
> > elaborate explanation. Well I am all ears : )
>
> As I said, I don’t think there is anyone left who can and is allowed to
> give you “an elaborate explanation”. It is essentially impossible to
> get started in WDDM today without going to work for one of the companies
> already doing WDDM drivers.
>
> –
> Tim Roberts, xxxxx@probo.com
> Providenza & Boekelheide, Inc.
>
>
> —
> NTDEV is sponsored by OSR
>
> OSR is HIRING!! See http://www.osr.com/careers
>
> 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
>

The Windows 8 WDK sample DOD “Display Only Driver” could indeed be a good way for starting to familiarize with Video Present Networks and even with some WDDM fundamentals in general.

This DOD WDDM (sub-)driver model is new in Windows 8. I is not a full WDDM kernel mode driver. It could even be a perfect solution for all those who want to write a simple “Frame Buffer Only” display driver. If it didn’t have the following limitations:

  • Only for server scenarios.
  • BSOD crashes the OS “by design” upon entering sleep state (no joke!).
  • Needs real hardware with interrupts (like WDDM always did).
  • No virtual adapter support.

Marcel Ruedinger
datronicsoft

Right, it is not a ‘full kernel mode driver’ as it does not support any
hardware rendering. However the topic is ‘VidPn’.

As far as your objections:

  1. ‘only for server’ or for anyone deploying windows VMs, client or server.
  2. this is indeed a silly limitation. It can be removed.
  3. as do all WDDM drivers. Not a major obstacle. The interrupt need only be
    declared as present.
  4. virtual adapter support is easy as long as you can virtualize a pci
    function (with an interrupt.) e.g. qemu.

You can of course add hardware rendering support. The point is that the
sample is a great starting point and a major step toward addressing the
very valid complaint that the WDDM docs are nearly unintelligible and that
there is no good reference code.

Mark Roddy

On Tue, Jan 22, 2013 at 6:56 AM, wrote:

> The Windows 8 WDK sample DOD “Display Only Driver” could indeed be a good
> way for starting to familiarize with Video Present Networks and even with
> some WDDM fundamentals in general.
>
> This DOD WDDM (sub-)driver model is new in Windows 8. I is not a full WDDM
> kernel mode driver. It could even be a perfect solution for all those who
> want to write a simple “Frame Buffer Only” display driver. If it didn’t
> have the following limitations:
> - Only for server scenarios.
> - BSOD crashes the OS “by design” upon entering sleep state (no joke!).
> - Needs real hardware with interrupts (like WDDM always did).
> - No virtual adapter support.
>
> Marcel Ruedinger
> datronicsoft
>
> —
> NTDEV is sponsored by OSR
>
> OSR is HIRING!! See http://www.osr.com/careers
>
> 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
>