/* ==================== R_ToggleSmpFrame ==================== */ void R_ToggleSmpFrame( void ) { if ( r_lockSurfaces.GetBool() ) { return; } R_FreeDeferredTriSurfs( frameData ); // clear frame-temporary data frameData_t *frame; frameMemoryBlock_t *block; // update the highwater mark R_CountFrameData(); frame = frameData; // reset the memory allocation to the first block frame->alloc = frame->memory; // clear all the blocks for ( block = frame->memory ; block ; block = block->next ) { block->used = 0; } R_ClearCommandChain(); }
/* ==================== R_IssueRenderCommands Called by R_EndFrame each frame ==================== */ static void R_IssueRenderCommands( void ) { if ( frameData->cmdHead->commandId == RC_NOP && !frameData->cmdHead->next ) { // nothing to issue return; } // r_skipBackEnd allows the entire time of the back end // to be removed from performance measurements, although // nothing will be drawn to the screen. If the prints // are going to a file, or r_skipBackEnd is later disabled, // usefull data can be received. // r_skipRender is usually more usefull, because it will still // draw 2D graphics if ( !r_skipBackEnd.GetBool() ) { RB_ExecuteBackEndCommands( frameData->cmdHead ); } R_ClearCommandChain(); }