Hi,
does the windows dxgkrnl use DxgkDdiBuildPagingBuffer to allocate (e.g.) the videomemory, which can then be accessed via DMA and the result will be displayed on the screen ? As far as I understand it from the WDK DxgkDdiBuildPagingBuffer returns a pointer to the allocated buffer (e.g. videomemory) in DXGKARG_BUILDPAGINGBUFFER* pBuildPagingBuffer->pDmaBuffer
What gets me puzzled is this:
“The display miniport driver must write the appropriate graphics processing unit (GPU) instruction in the provided paging buffer (in the pDmaBuffer member of DXGKARG_BUILDPAGINGBUFFER) according to the requested paging operation;”
What do they mean with “instruction” ?
Is another function is used to map the videomemory into virtual memory ?
Thank you!
xxxxx@directbox.com wrote:
does the windows dxgkrnl use DxgkDdiBuildPagingBuffer to allocate (e.g.) the videomemory, which can then be accessed via DMA and the result will be displayed on the screen ? As far as I understand it from the WDK DxgkDdiBuildPagingBuffer returns a pointer to the allocated buffer (e.g. videomemory) in DXGKARG_BUILDPAGINGBUFFER* pBuildPagingBuffer->pDmaBuffer
What gets me puzzled is this:
“The display miniport driver must write the appropriate graphics processing unit (GPU) instruction in the provided paging buffer (in the pDmaBuffer member of DXGKARG_BUILDPAGINGBUFFER) according to the requested paging operation;”
What do they mean with “instruction” ?
Is another function is used to map the videomemory into virtual memory ?
This has nothing to do with the visible frame buffer. A WDDM-capable
graphics chip is a programmable co-processor of a power comparable to
the main CPU. In WDDM, the display is built up from a set of low-level
graphics primitives (“instructions”) that are transmitted to the GPU and
then executed. The paging buffer you describe is used as a place to put
those commands so that the graphics chip can DMA them for execution.
WDDM has a very, very, very different method of operation from past
display driver models. Are you trying to write one, or hack into one?
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Basically I want to find a way to manipulate videomemory from my driver. On xp this could easily be done by mapping the memory with MmMapIoSpace or using a more elegant way described here http://www.vitoplantamura.com/index.aspx?page=bcvideo Unfortunately this is no longer possible under vista because of the new display driver model. Now I’m looking for a nice method to map the videomemory on vista. So yeah you might want to call this hacking but I don’t think it’s illegal and I don’t have any bad intentions.
xxxxx@directbox.com wrote:
Basically I want to find a way to manipulate videomemory from my driver. On xp this could easily be done by mapping the memory with MmMapIoSpace or using a more elegant way described here http://www.vitoplantamura.com/index.aspx?page=bcvideo Unfortunately this is no longer possible under vista because of the new display driver model. Now I’m looking for a nice method to map the videomemory on vista. So yeah you might want to call this hacking but I don’t think it’s illegal and I don’t have any bad intentions.
I didn’t mean to imply anything so negative. The word “hacking” has
gathered some very negative connotations in the media, but I still
consider much of the digging around I do to be “hacking”.
I don’t believe there is any way to accomplish what you ask. The
“desktop” in WDDM is a nebulous thing that does not necessarily exist as
a single unit in a frame buffer somewhere. It is a “montage”,
composited out of individual pieces that are described by the GPU
instructions. Windows are drawn in individual textures, that get
layered, shaped, lit, and blended at refresh time. However, I must
admit that what I know of WDDM comes entirely from white papers and
presentations; I have not had the “pleasure” of working on a WDDM
driver. With any luck, one of the battle-hardened veterans will jump in
with their opinion.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.