Dual buffers per window - yes, it's true that GDI windows have both a system memory and a video memory representation. There is without doubt a memory cost to doing this. One obvious alternative is to simply have a video memory representation and have the GDI redirection mechanism render to that format. There are two primary problems with this. The first is that the formats are not the same, and GDI doesn't support rendering into the DirectX format. Even if that were resolved, the more fundamental issue remains. Many GDI operations (XORs, alpha blending, and text are examples) are read-modify-write operations. To do that to a native video memory surface would involve reading back from video memory into the CPU (and thus into system memory), performing the operation, and then writing back. This is typically a horribly slow and pipeline-stalling operation.