/** * @brief RB_ExecuteRenderCommands * @param[in] data */ void RB_ExecuteRenderCommands(const void *data) { int t1, t2; t1 = ri.Milliseconds(); while (1) { switch (*( const int * ) data) { case RC_SET_COLOR: data = RB_SetColor(data); break; case RC_STRETCH_PIC: data = RB_StretchPic(data); break; case RC_2DPOLYS: data = RB_Draw2dPolys(data); break; case RC_ROTATED_PIC: data = RB_RotatedPic(data); break; case RC_STRETCH_PIC_GRADIENT: data = RB_StretchPicGradient(data); break; case RC_DRAW_SURFS: data = RB_DrawSurfs(data); break; case RC_DRAW_BUFFER: data = RB_DrawBuffer(data); break; case RC_SWAP_BUFFERS: data = RB_SwapBuffers(data); break; case RC_SCREENSHOT: data = RB_TakeScreenshotCmd(data); break; case RC_VIDEOFRAME: data = RB_TakeVideoFrameCmd(data); break; case RC_RENDERTOTEXTURE: data = RB_RenderToTexture(data); break; case RC_FINISH: data = RB_Finish(data); break; case RC_END_OF_LIST: default: // stop rendering on this thread t2 = ri.Milliseconds(); backEnd.pc.msec = t2 - t1; return; } } }
/* ==================== RB_ExecuteRenderCommands This function will be called synchronously if running without smp extensions, or asynchronously by another thread. ==================== */ void RB_ExecuteRenderCommands( const void *data ) { int t1, t2; t1 = ri.Milliseconds(); if ( !r_smp->integer || data == backEndData[ 0 ]->commands.cmds ) { backEnd.smpFrame = 0; } else { backEnd.smpFrame = 1; } while ( 1 ) { switch ( * ( const int * ) data ) { case RC_SET_COLOR: data = RB_SetColor( data ); break; case RC_STRETCH_PIC: data = RB_StretchPic( data ); break; case RC_2DPOLYS: data = RB_Draw2dPolys( data ); break; case RC_ROTATED_PIC: data = RB_RotatedPic( data ); break; case RC_STRETCH_PIC_GRADIENT: data = RB_StretchPicGradient( data ); break; case RC_DRAW_SURFS: data = RB_DrawSurfs( data ); break; case RC_RUN_VISTESTS: data = RB_RunVisTests( data ); break; case RC_DRAW_BUFFER: data = RB_DrawBuffer( data ); break; case RC_SWAP_BUFFERS: data = RB_SwapBuffers( data ); break; case RC_VIDEOFRAME: data = RB_TakeVideoFrameCmd( data ); break; //bani case RC_RENDERTOTEXTURE: data = RB_RenderToTexture( data ); break; //bani case RC_FINISH: data = RB_Finish( data ); break; case RC_END_OF_LIST: default: // stop rendering on this thread t2 = ri.Milliseconds(); backEnd.pc.msec = t2 - t1; return; } } }