| 414 | } |
| 415 | |
| 416 | void Benchmark_Static_Create( |
| 417 | BenchState& state, |
| 418 | BenchParams& params, |
| 419 | BuildBenchParams& buildParams, |
| 420 | ISPCScene* ispc_scene, |
| 421 | RTCBuildQuality quality, |
| 422 | RTCBuildQuality qflags) |
| 423 | { |
| 424 | #ifdef USE_GOOGLE_BENCHMARK |
| 425 | if (params.legacy) { |
| 426 | Benchmark_Static_Create_Legacy(ispc_scene, params, quality, qflags); |
| 427 | return; |
| 428 | } |
| 429 | |
| 430 | const size_t primitives = getNumPrimitives(ispc_scene); |
| 431 | const size_t objects = getNumObjects(ispc_scene); |
| 432 | |
| 433 | // warm-up |
| 434 | for (int i = 0; i < params.minTimeOrIterations; ++i) { |
| 435 | RTCScene scene = createScene(RTC_SCENE_FLAG_NONE, qflags); |
| 436 | convertScene(scene, ispc_scene, quality); |
| 437 | const size_t numThreads = TaskScheduler::threadCount(); |
| 438 | std::vector<std::thread> threads; |
| 439 | threads.reserve(numThreads); |
| 440 | rtcCommitScene(scene); |
| 441 | rtcReleaseScene(scene); |
| 442 | } |
| 443 | |
| 444 | for(auto _ : *state.state) { |
| 445 | state.state->PauseTiming(); |
| 446 | |
| 447 | RTCScene scene = createScene(RTC_SCENE_FLAG_NONE, qflags); |
| 448 | convertScene(scene, ispc_scene, quality); |
| 449 | |
| 450 | const size_t numThreads = TaskScheduler::threadCount(); |
| 451 | std::vector<std::thread> threads; |
| 452 | threads.reserve(numThreads); |
| 453 | |
| 454 | state.state->ResumeTiming(); |
| 455 | |
| 456 | rtcCommitScene(scene); |
| 457 | |
| 458 | state.state->PauseTiming(); |
| 459 | |
| 460 | rtcReleaseScene(scene); |
| 461 | |
| 462 | state.state->ResumeTiming(); |
| 463 | } |
| 464 | |
| 465 | addCounter(state, primitives, objects); |
| 466 | #else |
| 467 | Benchmark_Static_Create_Legacy(ispc_scene, params, quality, qflags); |
| 468 | #endif |
| 469 | } |
| 470 | struct Helper { |
| 471 | BarrierSys barrier; |
| 472 | volatile bool term = false; |
no test coverage detected