/* ============== idVertexCache::BeginBackEnd ============== */ void idVertexCache::BeginBackEnd() { mostUsedVertex = Max( mostUsedVertex, frameData[listNum].vertexMemUsed.GetValue() ); mostUsedIndex = Max( mostUsedIndex, frameData[listNum].indexMemUsed.GetValue() ); mostUsedJoint = Max( mostUsedJoint, frameData[listNum].jointMemUsed.GetValue() ); if( r_showVertexCache.GetBool() ) { idLib::Printf( "%08d: %d allocations, %dkB vertex, %dkB index, %ikB joint : %dkB vertex, %dkB index, %ikB joint\n", currentFrame, frameData[listNum].allocations, frameData[listNum].vertexMemUsed.GetValue() / 1024, frameData[listNum].indexMemUsed.GetValue() / 1024, frameData[listNum].jointMemUsed.GetValue() / 1024, mostUsedVertex / 1024, mostUsedIndex / 1024, mostUsedJoint / 1024 ); } // unmap the current frame so the GPU can read it const int startUnmap = Sys_Milliseconds(); UnmapGeoBufferSet( frameData[listNum] ); UnmapGeoBufferSet( staticData ); const int endUnmap = Sys_Milliseconds(); if( endUnmap - startUnmap > 1 ) { idLib::PrintfIf( r_showVertexCacheTimings.GetBool(), "idVertexCache::unmap took %i msec\n", endUnmap - startUnmap ); } drawListNum = listNum; // prepare the next frame for writing to by the CPU currentFrame++; listNum = currentFrame % VERTCACHE_NUM_FRAMES; const int startMap = Sys_Milliseconds(); MapGeoBufferSet( frameData[listNum] ); const int endMap = Sys_Milliseconds(); if( endMap - startMap > 1 ) { idLib::PrintfIf( r_showVertexCacheTimings.GetBool(), "idVertexCache::map took %i msec\n", endMap - startMap ); } ClearGeoBufferSet( frameData[listNum] ); #if 0 const int startBind = Sys_Milliseconds(); glBindBuffer( GL_ARRAY_BUFFER, ( GLuint )frameData[drawListNum].vertexBuffer.GetAPIObject() ); glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, ( GLuint )frameData[drawListNum].indexBuffer.GetAPIObject() ); const int endBind = Sys_Milliseconds(); if( endBind - startBind > 1 ) { idLib::Printf( "idVertexCache::bind took %i msec\n", endBind - startBind ); } #endif }
/* ============== idVertexCache::EndBackEnd ============== */ void idVertexCache::EndBackEnd() { // unmap the current frame so the GPU can read it const int startUnmap = Sys_Milliseconds(); UnmapGeoBufferSet( frameData[listNum] ); UnmapGeoBufferSet( staticData ); const int endUnmap = Sys_Milliseconds(); if ( endUnmap - startUnmap > 1 ) { idLib::PrintfIf( r_showVertexCacheTimings.GetBool(), "idVertexCache::unmap took %i msec\n", endUnmap - startUnmap ); } }