nngxUseSavedCmdlist Function

Syntax

NNGX_APICALL void NNGX_APIENTRY nngxUseSavedCmdlist(
     GLuint cmdlist,
     GLuint bufferoffset,
     GLsizei buffersize,
     GLuint requestid,
     GLsizei requestsize,
     GLbitfield statemask,
     GLboolean copycmd
);

Arguments

Name Description
in cmdlist Saved command list
in bufferoffset Save information that was obtained using the nngxStopCmdlistSave function
in buffersize Save information that was obtained using the nngxStopCmdlistSave function
in requestid Save information that was obtained using the nngxStopCmdlistSave function
in requestsize Save information that was obtained using the nngxStopCmdlistSave function
in statemask Specifies a bitwise OR of state flags for which to generate complete commands
in copycmd Specifies how the 3D command buffer is reused (either copied or referenced)

Return Values

No values are returned.

Description

Adds saved commands to the current command request.

Adds saved commands to the current command list. Set cmdlist to a saved command list. Set bufferoffset, buffersize, requestid, and requestsize to the save information obtained by nngxStopCmdlistSave. These are the offset (in bytes) from the starting address for saving the 3D command buffer, the number of bytes saved, the starting ID for saving command requests, and the number of command requests saved, respectively. Always use the same set of values that you obtained from nngxStopCmdlistSave. The save information specified to this function is not checked for errors (whether it matches the value obtained when saving ended), so behavior is undefined if you specify invalid values.

Set statemask to a bitwise OR of state flags for which to generate complete commands. The DMPGL state and the actual PICA register settings will be in conflict after you call this function. To resolve this, you must generate all commands and reset the PICA registers. It is sometimes redundant to generate all commands, however, so complete commands are generated only if they correspond to state flags specified by statemask.

If you set copycmd equal to GL_TRUE, the 3D command buffer is copied when commands are applied. If you set copycmd equal to GL_FALSE, the 3D command buffer is not copied when commands are applied. If the 3D command buffer is not copied, only sections that have split commands properly configured are executed. Without a split command, execution would not otherwise return from the external 3D command buffer to the current command list. The 3D command buffer is ignored where it is not included in 3D execution command requests. If you are using a command list without copying the 3D command buffer, you must call nngxSplitDrawCmdlist to add a split command before you stop saving.

If the 3D command buffer is not copied when commands are applied, the execution address will move from the 3D command buffer that is currently accumulating commands to an external 3D command buffer. The driver therefore calls nngxSplitDrawCmdlist to add a split command to the current 3D command buffer before it copies the command requests. The nngxSplitDrawCmdlist function is not called immediately after the current 3D command buffer is split.

If the 3D command buffer is copied, requestsize is nonzero, and the first command of the saved command requests is not a 3D execution command, the driver calls nngxSplitDrawCmdlist to add a split command to the current 3D command buffer before it copies the command list. The nngxSplitDrawCmdlist function is not called immediately after the current 3D command buffer is split.

This function generates the following errors.

GL_ERROR_8037_DMP0 is bound to the current command list.
GL_ERROR_8038_DMPInvalid value specified for cmdlist.
GL_ERROR_8039_DMPThe cmdlist argument specifies the current command list.
GL_ERROR_803A_DMPThis function has added saved commands past the maximum size of the current command list’s 3D command buffer and command requests.

Revision History

2010/03/12
Initial version.

CONFIDENTIAL