nngxAddVramDmaCommand Function

Syntax

NNGX_APICALL void NNGX_APIENTRY nngxAddVramDmaCommand(
     const GLvoid * srcaddr,
     GLvoid * dstaddr,
     GLsizei size
);

Arguments

Name Description
in srcaddr Transfer source address (main memory).
in dstaddr Transfer destination address (VRAM).
in size Transfer data size.

Return Values

There is no return value.

Description

Issues a DMA transfer command request to the current command list.

DMA transfer command requests accumulate in the current command list. They are used when transferring data from main memory to VRAM without using the GL functions. This operation transfers size bytes of data from the address specified in srcaddr to the address specified in dstaddr.

There are no restrictions on the alignment of values that can be set in srcaddr, dstaddr, or size. However, both srcaddr and dstaddr can be transferred more efficiently by using pointers that have 8-byte alignment.

When using this function to perform a DMA transfer, cache coherecy is handled internally prior to the transfer and does not require support from the calling side. When a cache flush is unnecessary, it can be omitted by using the nngxAddVramDmaCommandNoCacheFlush function.

The following errors occur with this function.

GL_ERROR_8062_DMPA valid command list is not currently bound.
GL_ERROR_8064_DMPThe size argument is negative.

See Also

nngxAddVramDmaCommandNoCacheFlush

Revision History

2011/08/02
Added information about alignment and transfer efficiency.
2011/03/18
Added an explanation about the nngxAddVramDmaCommandNoCacheFlush function.
2011/02/18
Deleted indications specific to the 8-byte alignment restrictions for srcaddr and dstaddr.
2011/01/17
Explained cache coherency.
2010/06/09
Initial version.

CONFIDENTIAL