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

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).

Question:

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.

  1. 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
datronicsoft

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!

Brs
HJ Li