Changeset 32175 in vbox for trunk/src/VBox/HostServices/SharedOpenGL/crserverlib
- Timestamp:
- Sep 1, 2010 1:01:45 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 65458
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_clear.c
r27889 r32175 11 11 #include "server_dispatch.h" 12 12 #include "server.h" 13 14 #ifdef VBOXCR_LOGFPS 15 #include <iprt/timer.h> 16 #include <iprt/ctype.h> 17 typedef struct VBOXCRFPS 18 { 19 uint64_t mPeriodSum; 20 uint64_t *mpaPeriods; 21 uint64_t mPrevTime; 22 uint64_t mcFrames; 23 uint32_t mcPeriods; 24 uint32_t miPeriod; 25 } VBOXCRFPS, *PVBOXCRFPS; 26 27 void vboxCrFpsInit(PVBOXCRFPS pFps, uint32_t cPeriods) 28 { 29 memset(pFps, 0, sizeof (*pFps)); 30 pFps->mcPeriods = cPeriods; 31 pFps->mpaPeriods = malloc(sizeof (pFps->mpaPeriods[0]) * cPeriods); 32 memset(pFps->mpaPeriods, 0, cPeriods * sizeof(pFps->mpaPeriods[0])); 33 } 34 35 void vboxCrFpsTerm(PVBOXCRFPS pFps) 36 { 37 free(pFps->mpaPeriods); 38 } 39 40 void vboxCrFpsReportFrame(PVBOXCRFPS pFps) 41 { 42 uint64_t cur = RTTimeNanoTS(); 43 if(pFps->mPrevTime) 44 { 45 uint64_t curPeriod = cur - pFps->mPrevTime; 46 pFps->mPeriodSum += curPeriod - pFps->mpaPeriods[pFps->miPeriod]; 47 pFps->mpaPeriods[pFps->miPeriod] = curPeriod; 48 ++pFps->miPeriod; 49 pFps->miPeriod %= pFps->mcPeriods; 50 } 51 pFps->mPrevTime = cur; 52 ++pFps->mcFrames; 53 } 54 55 uint64_t vboxCrFpsGetEveragePeriod(PVBOXCRFPS pFps) 56 { 57 return pFps->mPeriodSum / pFps->mcPeriods; 58 } 59 60 double vboxCrFpsGetFps(PVBOXCRFPS pFps) 61 { 62 return ((double)1000000000.0) / vboxCrFpsGetEveragePeriod(pFps); 63 } 64 65 uint64_t vboxCrFpsGetNumFrames(PVBOXCRFPS pFps) 66 { 67 return pFps->mcFrames; 68 } 69 70 #endif 13 71 14 72 … … 48 106 { 49 107 CRMuralInfo *mural; 50 108 #ifdef VBOXCR_LOGFPS 109 static VBOXCRFPS Fps; 110 static bool bFpsInited = false; 111 112 if (!bFpsInited) 113 { 114 vboxCrFpsInit(&Fps, 64 /* cPeriods */); 115 bFpsInited = true; 116 } 117 vboxCrFpsReportFrame(&Fps); 118 if(!(vboxCrFpsGetNumFrames(&Fps) % 31)) 119 { 120 double fps = vboxCrFpsGetFps(&Fps); 121 crDebug("fps: %f\n", fps); 122 } 123 #endif 51 124 mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, window); 52 125 if (!mural) {
Note:
See TracChangeset
for help on using the changeset viewer.