| 417 | } |
| 418 | |
| 419 | OSPFuture MPIDistributedDevice::renderFrame(OSPFrameBuffer _fb, |
| 420 | OSPRenderer _renderer, |
| 421 | OSPCamera _camera, |
| 422 | OSPWorld _world) |
| 423 | { |
| 424 | RKCOMMON_IF_TRACING_ENABLED({ |
| 425 | rkcommon::tracing::beginEvent("renderFrame", "MPIDD"); |
| 426 | rkcommon::tracing::beginEvent("renderFrame-mpibarrier", "MPIDD"); |
| 427 | }); |
| 428 | |
| 429 | mpicommon::barrier(mpicommon::worker.comm).wait(); |
| 430 | |
| 431 | RKCOMMON_IF_TRACING_ENABLED({ |
| 432 | rkcommon::tracing::endEvent(); |
| 433 | rkcommon::tracing::beginEvent("renderFrame-lookupObjects", "MPIDD"); |
| 434 | }); |
| 435 | |
| 436 | auto *fb = lookupDistributedObject<FrameBuffer>(_fb); |
| 437 | auto *renderer = lookupDistributedObject<Renderer>(_renderer); |
| 438 | auto *camera = lookupObject<Camera>(_camera); |
| 439 | auto *world = lookupObject<DistributedWorld>(_world); |
| 440 | |
| 441 | RKCOMMON_IF_TRACING_ENABLED({ |
| 442 | rkcommon::tracing::endEvent(); |
| 443 | rkcommon::tracing::beginEvent("renderFrame-createDLB", "MPIDD"); |
| 444 | }); |
| 445 | |
| 446 | auto loadBalancer = |
| 447 | std::make_shared<DistributedLoadBalancer>(allocateHandle()); |
| 448 | |
| 449 | RKCOMMON_IF_TRACING_ENABLED(rkcommon::tracing::endEvent()); |
| 450 | |
| 451 | fb->setCompletedEvent(OSP_NONE_FINISHED); |
| 452 | |
| 453 | fb->refInc(); |
| 454 | renderer->refInc(); |
| 455 | camera->refInc(); |
| 456 | world->refInc(); |
| 457 | |
| 458 | RKCOMMON_IF_TRACING_ENABLED( |
| 459 | rkcommon::tracing::setMarker("renderFrame-spawnRenderThread", "MPIDD")); |
| 460 | auto *f = new ThreadedRenderTask(fb, loadBalancer, [=]() { |
| 461 | RKCOMMON_IF_TRACING_ENABLED({ |
| 462 | rkcommon::tracing::setThreadName("MPIDD::threadedRenderTask"); |
| 463 | rkcommon::tracing::beginEvent("renderFrameTask", "MPIDD"); |
| 464 | }); |
| 465 | |
| 466 | utility::CodeTimer timer; |
| 467 | timer.start(); |
| 468 | loadBalancer->renderFrame(fb, renderer, camera, world); |
| 469 | timer.stop(); |
| 470 | |
| 471 | RKCOMMON_IF_TRACING_ENABLED(rkcommon::tracing::endEvent()); |
| 472 | |
| 473 | fb->refDec(); |
| 474 | renderer->refDec(); |
| 475 | camera->refDec(); |
| 476 | world->refDec(); |
nothing calls this directly
no test coverage detected