@@ -1798,7 +1798,7 @@ struct HaltOnSecondInterrupt : public util::NullInterrupter
1798
1798
mInterrupt = true ;
1799
1799
return false ;
1800
1800
}
1801
- tbb ::atomic<bool > mInterrupt = false ;
1801
+ std ::atomic<bool > mInterrupt { false } ;
1802
1802
};
1803
1803
1804
1804
} // namespace
@@ -2332,127 +2332,130 @@ TEST_F(TestPointRasterizeFrustum, testStreaming)
2332
2332
#ifndef ONLY_RASTER_FLOAT
2333
2333
// memory tests
2334
2334
2335
- FloatGrid::Ptr density1, density2, density3;
2336
- Vec3SGrid::Ptr velocity1, velocity2, velocity3;
2335
+ if (io::Archive::isDelayedLoadingEnabled () && io::Archive::hasBloscCompression ()) {
2337
2336
2338
- const size_t mb = 1024 * 1024 ;
2339
- const size_t tinyMemory = static_cast < size_t >( 0.1 *mb) ;
2337
+ FloatGrid:: Ptr density1, density2, density3 ;
2338
+ Vec3SGrid:: Ptr velocity1, velocity2, velocity3 ;
2340
2339
2341
- size_t initialMemory;
2340
+ const size_t mb = 1024 *1024 ;
2341
+ const size_t tinyMemory = static_cast <size_t >(0.1 *mb);
2342
2342
2343
- { // memory test 1 - retain caches and streaming disabled
2344
- Rasterizer rasterizer (settings);
2345
-
2346
- rasterizer.addPoints (points, /* stream=*/ false );
2347
- rasterizer.addPoints (points2, /* stream=*/ false );
2348
-
2349
- initialMemory = rasterizer.memUsage ();
2343
+ size_t initialMemory;
2350
2344
2351
- EXPECT_TRUE (initialMemory > size_t (4 *mb) && initialMemory < size_t (16 *mb));
2345
+ { // memory test 1 - retain caches and streaming disabled
2346
+ Rasterizer rasterizer (settings);
2352
2347
2353
- EXPECT_EQ (size_t (2 ), rasterizer.size ());
2348
+ rasterizer.addPoints (points, /* stream=*/ false );
2349
+ rasterizer.addPoints (points2, /* stream=*/ false );
2354
2350
2355
- velocity1 = rasterizer.rasterizeAttribute <Vec3SGrid, Vec3s>(" v" );
2356
- EXPECT_EQ (Index64 (219780 ), velocity1->activeVoxelCount ());
2351
+ initialMemory = rasterizer.memUsage ();
2357
2352
2358
- EXPECT_TRUE (rasterizer.memUsage () > size_t (71 *mb) &&
2359
- rasterizer.memUsage () < size_t (91 *mb));
2353
+ EXPECT_TRUE (initialMemory > size_t (4 *mb) && initialMemory < size_t (16 *mb));
2360
2354
2361
- density1 = rasterizer.rasterizeDensity (" density" );
2362
- EXPECT_EQ (Index64 (219780 ), density1->activeVoxelCount ());
2355
+ EXPECT_EQ (size_t (2 ), rasterizer.size ());
2363
2356
2364
- // no data is discarded so expect a fairly high memory footprint
2357
+ velocity1 = rasterizer.rasterizeAttribute <Vec3SGrid, Vec3s>(" v" );
2358
+ EXPECT_EQ (Index64 (219780 ), velocity1->activeVoxelCount ());
2365
2359
2366
- EXPECT_TRUE (rasterizer.memUsage () > size_t (80 *mb) &&
2367
- rasterizer.memUsage () < size_t (100 *mb));
2368
- }
2360
+ EXPECT_TRUE (rasterizer.memUsage () > size_t (71 *mb) &&
2361
+ rasterizer.memUsage () < size_t (91 *mb));
2369
2362
2370
- { // memory test 2 - retain caches and streaming enabled
2363
+ density1 = rasterizer.rasterizeDensity (" density" );
2364
+ EXPECT_EQ (Index64 (219780 ), density1->activeVoxelCount ());
2371
2365
2372
- { // reopen file and deep copy while setting transform
2373
- io::File file (filename);
2374
- file.open ();
2375
- openvdb::GridBase::Ptr baseGrid = file.readGrid (" points" );
2376
- file.close ();
2366
+ // no data is discarded so expect a fairly high memory footprint
2377
2367
2378
- points = openvdb::gridPtrCast<PointDataGrid>(baseGrid);
2379
- points2 = points->deepCopy ();
2380
- points2->setTransform (transform);
2368
+ EXPECT_TRUE (rasterizer.memUsage () > size_t (80 *mb) &&
2369
+ rasterizer.memUsage () < size_t (100 *mb));
2381
2370
}
2382
2371
2383
- Rasterizer rasterizer (settings);
2372
+ { // memory test 2 - retain caches and streaming enabled
2384
2373
2385
- rasterizer.addPoints (points, /* stream=*/ true );
2386
- rasterizer.addPoints (points2, /* stream=*/ true );
2374
+ { // reopen file and deep copy while setting transform
2375
+ io::File file (filename);
2376
+ file.open ();
2377
+ openvdb::GridBase::Ptr baseGrid = file.readGrid (" points" );
2378
+ file.close ();
2387
2379
2388
- EXPECT_EQ (initialMemory, rasterizer.memUsage ());
2380
+ points = openvdb::gridPtrCast<PointDataGrid>(baseGrid);
2381
+ points2 = points->deepCopy ();
2382
+ points2->setTransform (transform);
2383
+ }
2389
2384
2390
- EXPECT_EQ ( size_t ( 2 ), rasterizer. size () );
2385
+ Rasterizer rasterizer (settings );
2391
2386
2392
- velocity2 = rasterizer.rasterizeAttribute <Vec3SGrid, Vec3s>( " v " );
2393
- EXPECT_EQ ( Index64 ( 219780 ), velocity2-> activeVoxelCount () );
2387
+ rasterizer.addPoints (points, /* stream= */ true );
2388
+ rasterizer. addPoints (points2, /* stream= */ true );
2394
2389
2395
- size_t postRasterMemory = rasterizer.memUsage ();
2390
+ EXPECT_EQ (initialMemory, rasterizer.memUsage () );
2396
2391
2397
- EXPECT_TRUE (postRasterMemory > size_t (70 *mb) && postRasterMemory < size_t ( 85 *mb ));
2392
+ EXPECT_EQ ( size_t (2 ), rasterizer. size ( ));
2398
2393
2399
- density2 = rasterizer.rasterizeDensity ( " density " );
2400
- EXPECT_EQ (Index64 (219780 ), density2 ->activeVoxelCount ());
2394
+ velocity2 = rasterizer.rasterizeAttribute <Vec3SGrid, Vec3s>( " v " );
2395
+ EXPECT_EQ (Index64 (219780 ), velocity2 ->activeVoxelCount ());
2401
2396
2402
- // as data is being streamed, second attribute shouldn't change memory usage very much
2397
+ size_t postRasterMemory = rasterizer. memUsage ();
2403
2398
2404
- EXPECT_TRUE (rasterizer.memUsage () < (postRasterMemory + tinyMemory));
2405
- }
2399
+ EXPECT_TRUE (postRasterMemory > size_t (70 *mb) && postRasterMemory < size_t (85 *mb));
2406
2400
2407
- { // memory test 3 - release caches and streaming enabled
2401
+ density2 = rasterizer.rasterizeDensity (" density" );
2402
+ EXPECT_EQ (Index64 (219780 ), density2->activeVoxelCount ());
2408
2403
2409
- { // reopen file and deep copy while setting transform
2410
- io::File file (filename);
2411
- file.open ();
2412
- openvdb::GridBase::Ptr baseGrid = file.readGrid (" points" );
2413
- file.close ();
2404
+ // as data is being streamed, second attribute shouldn't change memory usage very much
2414
2405
2415
- points = openvdb::gridPtrCast<PointDataGrid>(baseGrid);
2416
- points2 = points->deepCopy ();
2417
- points2->setTransform (transform);
2406
+ EXPECT_TRUE (rasterizer.memUsage () < (postRasterMemory + tinyMemory));
2418
2407
}
2419
2408
2420
- auto points3 = points->deepCopy ();
2421
- auto points4 = points2->deepCopy ();
2409
+ { // memory test 3 - release caches and streaming enabled
2410
+
2411
+ { // reopen file and deep copy while setting transform
2412
+ io::File file (filename);
2413
+ file.open ();
2414
+ openvdb::GridBase::Ptr baseGrid = file.readGrid (" points" );
2415
+ file.close ();
2422
2416
2423
- Settings settings2 (*frustum);
2424
- settings2.threshold = 0 .0f ;
2417
+ points = openvdb::gridPtrCast<PointDataGrid>(baseGrid);
2418
+ points2 = points->deepCopy ();
2419
+ points2->setTransform (transform);
2420
+ }
2421
+
2422
+ auto points3 = points->deepCopy ();
2423
+ auto points4 = points2->deepCopy ();
2425
2424
2426
- Mask mask2 (*frustum, nullptr , BBoxd (), /* clipToFrustum=*/ false );
2425
+ Settings settings2 (*frustum);
2426
+ settings2.threshold = 0 .0f ;
2427
2427
2428
- Rasterizer rasterizer (settings2, mask2 );
2428
+ Mask mask2 (*frustum, nullptr , BBoxd (), /* clipToFrustum= */ false );
2429
2429
2430
- rasterizer.addPoints (points, /* stream=*/ true );
2431
- rasterizer.addPoints (points2, /* stream=*/ true );
2430
+ Rasterizer rasterizer (settings2, mask2);
2432
2431
2433
- EXPECT_EQ (initialMemory, rasterizer.memUsage () );
2434
- EXPECT_EQ ( size_t ( 2 ), rasterizer.size () );
2432
+ rasterizer.addPoints (points, /* stream= */ true );
2433
+ rasterizer.addPoints (points2, /* stream= */ true );
2435
2434
2436
- density3 = rasterizer. rasterizeDensity ( " density " , RasterMode::ACCUMULATE, true );
2437
- EXPECT_EQ (Index64 ( 219780 ), density3-> activeVoxelCount ());
2435
+ EXPECT_EQ (initialMemory, rasterizer. memUsage () );
2436
+ EXPECT_EQ (size_t ( 2 ), rasterizer. size ());
2438
2437
2439
- // all voxel data, attribute data and caches are being discarded,
2440
- // so memory after rasterizing shouldn't change very much
2438
+ density3 = rasterizer. rasterizeDensity ( " density " , RasterMode::ACCUMULATE, true );
2439
+ EXPECT_EQ ( Index64 ( 219780 ), density3-> activeVoxelCount ());
2441
2440
2442
- EXPECT_TRUE (rasterizer.memUsage () < (initialMemory + tinyMemory));
2441
+ // all voxel data, attribute data and caches are being discarded,
2442
+ // so memory after rasterizing shouldn't change very much
2443
2443
2444
- // deep-copies of delay-loaded point grids need to be used for repeat rasterization
2444
+ EXPECT_TRUE (rasterizer. memUsage () < (initialMemory + tinyMemory));
2445
2445
2446
- rasterizer.clear ();
2447
- rasterizer.addPoints (points3, /* stream=*/ true );
2448
- rasterizer.addPoints (points4, /* stream=*/ true );
2446
+ // deep-copies of delay-loaded point grids need to be used for repeat rasterization
2449
2447
2450
- EXPECT_EQ (size_t (2 ), rasterizer.size ());
2448
+ rasterizer.clear ();
2449
+ rasterizer.addPoints (points3, /* stream=*/ true );
2450
+ rasterizer.addPoints (points4, /* stream=*/ true );
2451
2451
2452
- EXPECT_TRUE (rasterizer. memUsage () < (initialMemory + tinyMemory ));
2452
+ EXPECT_EQ ( size_t ( 2 ), rasterizer. size ( ));
2453
2453
2454
- velocity3 = rasterizer.rasterizeAttribute <Vec3SGrid, Vec3s>(" v" , RasterMode::ACCUMULATE, true );
2455
- EXPECT_EQ (Index64 (219780 ), velocity3->activeVoxelCount ());
2454
+ EXPECT_TRUE (rasterizer.memUsage () < (initialMemory + tinyMemory));
2455
+
2456
+ velocity3 = rasterizer.rasterizeAttribute <Vec3SGrid, Vec3s>(" v" , RasterMode::ACCUMULATE, true );
2457
+ EXPECT_EQ (Index64 (219780 ), velocity3->activeVoxelCount ());
2458
+ }
2456
2459
}
2457
2460
#endif
2458
2461
0 commit comments