/* ==================== 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 ) { data = PADP(data, sizeof(void *)); switch ( *(const int *)data ) { case RC_SET_COLOR: data = RB_SetColor( data ); break; case RC_STRETCH_PIC: data = RB_StretchPic( 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_COLORMASK: data = RB_ColorMask(data); break; case RC_CLEARDEPTH: data = RB_ClearDepth(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 syncronously if running without smp extensions, or asyncronously 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_ROTATE_PIC: data = RB_RotatePic( data ); break; case RC_ROTATE_PIC2: data = RB_RotatePic2( data ); break; case RC_SCISSOR: data = RB_Scissor( 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_WORLD_EFFECTS: data = RB_WorldEffects( data ); break; case RC_END_OF_LIST: default: // stop rendering on this thread t2 = ri.Milliseconds (); backEnd.pc.msec = t2 - t1; return; } } }
/* ==================== RB_ExecuteRenderCommands ==================== */ void RB_ExecuteRenderCommands( const void *data ) { int t1, t2; t1 = ri.Milliseconds (); while ( 1 ) { data = PADP(data, sizeof(void *)); switch ( *(const int *)data ) { case RC_SET_COLOR: data = RB_SetColor( data ); break; case RC_STRETCH_PIC: data = RB_StretchPic( data ); break; case RC_ROTATED_PIC: data = RB_RotatedPic( 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_COLORMASK: data = RB_ColorMask(data); break; case RC_CLEARDEPTH: data = RB_ClearDepth(data); break; case RC_END_OF_LIST: default: // stop rendering 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; } assert(0 == backEnd.stencil_level); 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_STENCIL_SURF: data = RB_StencilSurf(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_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 syncronously if running without smp extensions, or asyncronously 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_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_STRETCH_RAW: data = RB_StretchRaw( data ); break; case RC_UPLOAD_CINE: data = RB_UploadCine( data ); break; case RC_CREATE_IMAGE: data = RB_Create_Image( data ); break; case RC_LOAD_TEX: data = RB_LoadTex( data ); break; case RC_CLEAN0: data = RB_Clean( data, qtrue ); break; case RC_CLEAN1: data = RB_Clean( data, qfalse ); break; case RC_INIT: SMP_InitGL(); return; 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; } } }
/* ==================== 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 ) { data = PADP(data, sizeof(void *)); switch ( *(const int *)data ) { case RC_SET_COLOR: data = RB_SetColor( data ); break; case RC_STRETCH_PIC: #ifdef FRAMEBUFFER_AND_GLSL_SUPPORT R_FrameBuffer_EndFrame(); #endif data = RB_StretchPic( data ); break; case RC_DRAW_SURFS: data = RB_DrawSurfs( data ); break; case RC_DRAW_BUFFER: #ifdef FRAMEBUFFER_AND_GLSL_SUPPORT data = useFrameBuffer ? RB_DrawFrameBuffer( data ) : RB_DrawBuffer( data ); #else data = RB_DrawBuffer( data ); #endif break; case RC_SWAP_BUFFERS: data = RB_SwapBuffers( data ); break; //these two use a hack to let them copy the framebuffer effects too case RC_SCREENSHOT: #ifdef FRAMEBUFFER_AND_GLSL_SUPPORT R_FrameBufferUnBind(); #endif data = RB_TakeScreenshotCmd( data ); #ifdef FRAMEBUFFER_AND_GLSL_SUPPORT R_FrameBufferBind(); #endif break; case RC_VIDEOFRAME: #ifdef FRAMEBUFFER_AND_GLSL_SUPPORT R_FrameBufferUnBind(); #endif data = RB_TakeVideoFrameCmd( data ); #ifdef FRAMEBUFFER_AND_GLSL_SUPPORT R_FrameBufferBind(); #endif break; case RC_COLORMASK: data = RB_ColorMask(data); break; case RC_CLEARDEPTH: data = RB_ClearDepth(data); break; case RC_END_OF_LIST: default: // stop rendering on this thread t2 = ri.Milliseconds (); backEnd.pc.msec = t2 - t1; return; } } }