@@ -336,7 +336,6 @@ Renderer::InitializationData Renderer::initSceneObjects(const SAssetBundle& mesh
336
336
cullData.reserve (batchInstanceBoundTotal);
337
337
338
338
newInstanceDataBuffer = core::make_smart_refctd_ptr<ICPUBuffer>(sizeof (ext::MitsubaLoader::instance_data_t )*batchInstanceBoundTotal);
339
- retval.mdiFirstIndices .resize (batchInstanceBoundTotal);
340
339
}
341
340
// actually commit the physical memory, compute batches and set up instance data
342
341
{
@@ -346,7 +345,6 @@ Renderer::InitializationData Renderer::initSceneObjects(const SAssetBundle& mesh
346
345
auto * vertexPtr = reinterpret_cast <const float *>(cpump->getPackerDataStore ().vertexBuffer ->getPointer ());
347
346
auto * mdiPtr = reinterpret_cast <DrawElementsIndirectCommand_t*>(cpump->getPackerDataStore ().MDIDataBuffer ->getPointer ());
348
347
auto * newInstanceData = reinterpret_cast <ext::MitsubaLoader::instance_data_t *>(newInstanceDataBuffer->getPointer ());
349
- auto batchFirstIndexIt = retval.mdiFirstIndices .begin ();
350
348
351
349
constexpr uint32_t kIndicesPerTriangle = 3u ;
352
350
core::vector<CPUMeshPacker::CombinedDataOffsetTable> cdot (mdiBoundMax);
@@ -455,7 +453,6 @@ Renderer::InitializationData Renderer::initSceneObjects(const SAssetBundle& mesh
455
453
}
456
454
457
455
newInstanceData++;
458
- *(batchFirstIndexIt++) = firstIndex;
459
456
}
460
457
for (auto j=thisShapeInstancesBeginIx; j!=rrInstances.size (); j++)
461
458
rr->AttachShape (rrInstances[j]);
@@ -484,7 +481,6 @@ Renderer::InitializationData Renderer::initSceneObjects(const SAssetBundle& mesh
484
481
);
485
482
instanceDataDescPtr->buffer = {0u ,cullData.size ()*sizeof (ext::MitsubaLoader::instance_data_t )};
486
483
instanceDataDescPtr->desc = std::move (newInstanceDataBuffer); // TODO: trim the buffer
487
- retval.mdiFirstIndices .resize (cullData.size ());
488
484
{
489
485
auto gpump = core::make_smart_refctd_ptr<GPUMeshPacker>(m_driver,cpump.get ());
490
486
const auto & dataStore = gpump->getPackerDataStore ();
@@ -874,7 +870,10 @@ void Renderer::init(const SAssetBundle& meshes, core::smart_refctd_ptr<ICPUBuffe
874
870
auto createEmptyInteropBufferAndSetUpInfo = [&](IGPUDescriptorSet::SDescriptorInfo* info, InteropBuffer& interopBuffer, size_t size) -> void
875
871
{
876
872
if (static_cast <COpenGLDriver*>(m_driver)->runningInRenderdoc ()) // makes Renderdoc capture the modifications done by OpenCL
873
+ {
877
874
interopBuffer.buffer = m_driver->createUpStreamingGPUBufferOnDedMem (size);
875
+ // interopBuffer.buffer->getBoundMemory()->mapMemoryRange(IDriverMemoryAllocation::EMCAF_WRITE,{0u,size})
876
+ }
878
877
else
879
878
interopBuffer.buffer = m_driver->createDeviceLocalGPUBufferOnDedMem (size);
880
879
interopBuffer.asRRBuffer = m_rrManager->linkBuffer (interopBuffer.buffer .get (), CL_MEM_READ_ONLY);
@@ -912,7 +911,6 @@ void Renderer::init(const SAssetBundle& meshes, core::smart_refctd_ptr<ICPUBuffe
912
911
core::smart_refctd_ptr<IGPUBuffer> _staticViewDataBuffer;
913
912
{
914
913
_staticViewDataBuffer = createFilledBufferAndSetUpInfoFromStruct (infos+0 ,m_staticViewData);
915
- createFilledBufferAndSetUpInfoFromVector (infos+1 ,initData.mdiFirstIndices );
916
914
{
917
915
constexpr auto ScrambleStateChannels = 2u ;
918
916
auto tmpBuff = m_driver->createCPUSideGPUVisibleGPUBufferOnDedMem (sizeof (uint32_t )*ScrambleStateChannels*renderPixelCount);
@@ -1369,6 +1367,7 @@ uint32_t Renderer::traceBounce(uint32_t raycount)
1369
1367
m_driver->copyBuffer (m_rayCountBuffer.get (),m_littleDownloadBuffer.get (),sizeof (uint32_t )*m_raytraceCommonData.rayCountWriteIx ,0u ,sizeof (uint32_t ));
1370
1368
static_assert (core::isPoT (RAYCOUNT_N_BUFFERING)," Raycount Buffer needs to be PoT sized!" );
1371
1369
glFinish (); // sync CPU to GL
1370
+ // auto start = std::chrono::steady_clock::now();
1372
1371
const uint32_t nextTraceRaycount = *reinterpret_cast <uint32_t *>(m_littleDownloadBuffer->getBoundMemory ()->getMappedPointer ());
1373
1372
if (nextTraceRaycount==0u )
1374
1373
return 0u ;
@@ -1396,6 +1395,9 @@ uint32_t Renderer::traceBounce(uint32_t raycount)
1396
1395
ocl::COpenCLHandler::ocl.pclEnqueueReleaseGLObjects (commandQueue, objCount, clObjects, 1u , &raycastDone, &released);
1397
1396
ocl::COpenCLHandler::ocl.pclFlush (commandQueue);
1398
1397
ocl::COpenCLHandler::ocl.pclWaitForEvents (1u ,&released);
1398
+ // const auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now()-start).count();
1399
+ // if (elapsed>100000ull)
1400
+ // printf("Path Vertex: %d took %d us\n",m_raytraceCommonData.depth,elapsed);
1399
1401
return nextTraceRaycount;
1400
1402
}
1401
1403
else
0 commit comments