MCPcopy Create free account
hub / github.com/RenderKit/ospray / renderFrame

Method renderFrame

modules/mpi/ospray/MPIDistributedDevice.cpp:419–483  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

417}
418
419OSPFuture 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();

Callers

nothing calls this directly

Calls 4

setCompletedEventMethod · 0.80
stopMethod · 0.80
waitMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected