1.17.2009

DirectDraw : SurfaceHeap

以下是猜的:

DirectDraw 需要 CreateSurface( ),Surface 就是一塊memory。這塊memory 最終 可以用來指定輸出到 lcd 上。
所以可以 create 很多個 surface,然後分別指定顯示到 lcd
這個 Surface memory 是從 Display Driver 的 Heap 中 alloc 的。

這一塊 Display Driver 的記憶體一般稱為 FrameBufferHeap,或是 VideoMemoryHeap。
這塊記憶體是要和 graphic hardware 加速器合作。所以會有一些限制。
例如,要是一塊連續的記憶體,還有,要在 phyiscal memory address 的特殊位置。

但是,管理這一塊 MemoryHeap,卻是 WindowsCE OS 做的。

在 Display Driver 的生成,就要 new 一個 SurfaceHeap( ) 物件。

DisplayHeap = new SurfaceHeap(HeapSize,Start address,NULL,NULL);

在生成函式中,告知heap的 start address 和 heap size。

這塊 surfaceheap memory,會在 config.bib 中預留下來。

沒有留言: