Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results


Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging

The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.

Check out The OSR Learning Library at:

WDDM Miniport DxgkDdiPresent() and softdraw Blt (cont.)

Marcel_RuedingerMarcel_Ruedinger Member Posts: 176
Answering to a thread that started 5 weeks ago and never got any answers (original thread cannot be posted any more - need to create this new thread).

Is it possible to implement a softdraw Blt in the DxgkDdiPresent() function in our WDDM 1.0 miniport driver? (...) need help obtaining linear pointers to the source and target.

Answer and/or base for discussion:

1. According to my understanding of WDDM, no BLT operation (no matter if DMA or softcopy) should be carried out in DxgkDdiPresent(). There such operations should only be prepared. The correct place to carry out BLTs (and other similar operations) seems to be DxgkDdiSubmitCommand()

Hint: Still BLT soft copies carried out within DxgkDdiPresent() do work surprisingly well in a WDDM 1.1 driver on current Win7. Even the whole WDDM kernel mode driver can exclusively rely on them (only as long as Aero is off!). However, such an approach seems very far off track. I would expect it to break sooner or later anyway.

2. Acoording to my understanding of WDDM, BLT soft copy is NOT included in the WDDM model standard functionality. I conclude this, because DxgkDdiPresent() only delivers physical addresses and no virtual adddresses.

Keeping in mind that soft BLT seems beyond the WDDM model standard, the pointers (virtual addresses) for a soft copy BLT can indeed be derived from DxgkDdiPresent() parameters in certain circumstances. This however can be tricky or even impossible. It depends on the characteristics of the WDDM memory segment, where source- and target-allocations are located in. Both allocations must be either within a "CPU Visible" segment or within an "Aperture Segment". In that case, the physical memory can be mapped to virtual address space using standard Windows driver calls like MmMapIoSpace(), MmMapLockedPagesSpecifyCache() or something similar (careful to use same caching attributes as possible other mappings of the same memory).

Marcel Ruedinger


  • hj_lihj_li Member Posts: 2

    hi master!

    Can i ask you that how register hdmi interrupt after WDDM 2.2?
    and what‘s the flow after Interrupt Trigger?Is it same like WDDM spec?
    I have no idea,but i guess that must have a way to register hdmi interrupt...

    If you can see and reply, be grateful!

    HJ Li

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Writing WDF Drivers 12 September 2022 Live, Online
Internals & Software Drivers 23 October 2022 Live, Online
Kernel Debugging 14 November 2022 Live, Online
Developing Minifilters 5 December 2022 Live, Online