/* * 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_CAPSHADOWMAP: data = RB_CapShadowMap(data); break; case RC_POSTPROCESS: data = RB_PostProcess(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 *oldData ) { int t1, t2; commandHeader_t *header; const void* data; t1 = ri.Milliseconds (); if ( !r_smp->integer || oldData == backEndData[0]->data ) { backEnd.smpFrame = 0; } else { backEnd.smpFrame = 1; } again: data = oldData; header = (commandHeader_t *)data; backEnd.doneBloom = qfalse; while ( 1 ) { int cmd = header->commandId; data = header + 1; header = (commandHeader_t *)(((char *)header) + header->size); switch ( cmd ) { case RC_SET_COLOR: RB_SetColor( data ); break; case RC_STRETCH_PIC: R_BloomScreen(); RB_StretchPic( data ); break; case RC_DRAW_SURFS: backEnd.doneSurfaces = qtrue; RB_DrawSurfs( data ); break; case RC_DRAW_BUFFER: RB_DrawBuffer( data ); break; case RC_SWAP_BUFFERS: R_BloomScreen(); if ( RB_SwapBuffers( data ) ) goto again; break; case RC_SCREENSHOT: RB_ScreenShotCmd( data ); break; case RC_CAPTURE: R_MME_CaptureShotCmd( data ); break; case RC_CAPTURE_STEREO: R_MME_CaptureShotCmdStereo( data ); break; case RC_ALLOC: 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_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_CAPSHADOWMAP: data = RB_CapShadowMap(data); break; case RC_POSTPROCESS: data = RB_PostProcess(data); break; case RC_EXPORT_CUBEMAPS: data = RB_ExportCubemaps(data); break; case RC_END_OF_LIST: default: // finish any 2D drawing if needed if(tess.numIndexes) RB_EndSurface(); // 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; GLimp_LogComment( "--- RB_ExecuteRenderCommands ---\n" ); 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_DRAW_VIEW: data = RB_DrawView( 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_END_OF_LIST: default: // stop rendering on this thread t2 = ri.Milliseconds(); backEnd.pc.msec = t2 - t1; return; } } }
/** * @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 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; } } }