Platform-specific write test
| 140 | |
| 141 | // Platform-specific write test |
| 142 | void nativeWrite(bool useShm) |
| 143 | { |
| 144 | fbx_struct fb; int i = 0; double drawTime; |
| 145 | Timer timer, timer2; |
| 146 | |
| 147 | memset(&fb, 0, sizeof(fb)); |
| 148 | |
| 149 | try |
| 150 | { |
| 151 | TRY_FBX(fbx_init(&fb, wh, 0, 0, useShm ? 1 : 0)); |
| 152 | if(useShm && !fb.shm) THROW("MIT-SHM not available"); |
| 153 | fprintf(stderr, "Native Pixel Format: %s\n", fb.pf->name); |
| 154 | if(fb.width != drawableWidth || fb.height != drawableHeight) |
| 155 | { |
| 156 | fprintf(stderr, "WARNING: Requested size = %d x %d Actual size = %d x %d\n", |
| 157 | drawableWidth, drawableHeight, fb.width, fb.height); |
| 158 | } |
| 159 | |
| 160 | clearFB(); |
| 161 | if(useShm) |
| 162 | fprintf(stderr, "FBX bottom-up write [SHM]: "); |
| 163 | else |
| 164 | fprintf(stderr, "FBX bottom-up write: "); |
| 165 | i = 0; drawTime = 0; timer2.start(); |
| 166 | do |
| 167 | { |
| 168 | #ifndef _WIN32 |
| 169 | if(checkDB) |
| 170 | { |
| 171 | memset(fb.bits, 255, fb.pitch * fb.height); |
| 172 | TRY_FBX(fbx_awrite(&fb, 0, 0, 0, 0, 0, 0)); |
| 173 | } |
| 174 | #endif |
| 175 | initBuf(0, 0, fb.width, fb.pitch, fb.height, fb.pf, |
| 176 | (unsigned char *)fb.bits, i); |
| 177 | timer.start(); |
| 178 | TRY_FBX(fbx_flip(&fb, 0, 0, 0, 0)); |
| 179 | TRY_FBX(fbx_write(&fb, 0, 0, 0, 0, 0, 0)); |
| 180 | drawTime += timer.elapsed(); |
| 181 | i++; |
| 182 | } while(timer2.elapsed() < benchTime); |
| 183 | fprintf(stderr, "%f Mpixels/sec", |
| 184 | (double)i * (double)(fb.width * fb.height) / (1000000. * drawTime)); |
| 185 | memset(fb.bits, 0, fb.pitch * fb.height); |
| 186 | TRY_FBX(fbx_read(&fb, 0, 0)); |
| 187 | if(!cmpBuf(0, 0, fb.width, fb.pitch, fb.height, fb.pf, |
| 188 | (unsigned char *)fb.bits, i - 1, true)) |
| 189 | { |
| 190 | fprintf(stderr, " (ERROR CHECK FAILED)\n"); |
| 191 | retCode = -1; |
| 192 | } |
| 193 | else fprintf(stderr, " (no errors)\n"); |
| 194 | |
| 195 | clearFB(); |
| 196 | if(useShm) |
| 197 | fprintf(stderr, "FBX 1/4 top-down write [SHM]: "); |
| 198 | else |
| 199 | fprintf(stderr, "FBX 1/4 top-down write: "); |
no test coverage detected