Skip to content

Commit 0d33b03

Browse files
committed
First pass at moving dispatchMainThreadTasks() to client code
Some tests are still failing, so WIP
1 parent 9893a66 commit 0d33b03

File tree

5 files changed

+40
-8
lines changed

5 files changed

+40
-8
lines changed

Cesium3DTilesSelection/include/Cesium3DTilesSelection/Tileset.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ class CESIUM3DTILESSELECTION_API Tileset final {
437437
*
438438
* This method also calls
439439
* {@link CesiumAsync::AsyncSystem::dispatchMainThreadTasks} on the tileset's
440-
* {@link getAsyncSystem}.
440+
* {@link getAsyncSystem}, but not for long!
441441
*/
442442
void loadTiles();
443443

Cesium3DTilesSelection/src/Tileset.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -396,9 +396,9 @@ const ViewUpdateResult& Tileset::updateViewGroup(
396396
_options.enableFrustumCulling && !_options.enableLodTransitionPeriod;
397397
_options.enableFogCulling =
398398
_options.enableFogCulling && !_options.enableLodTransitionPeriod;
399-
399+
#if 0
400400
this->_asyncSystem.dispatchMainThreadTasks();
401-
401+
#endif
402402
ViewUpdateResult& result = viewGroup.getViewUpdateResult();
403403

404404
Tile* pRootTile = this->_pTilesetContentManager->getRootTile();
@@ -444,9 +444,9 @@ const ViewUpdateResult& Tileset::updateViewGroup(
444444

445445
void Tileset::loadTiles() {
446446
CESIUM_TRACE("Tileset::loadTiles");
447-
447+
#if 0
448448
this->_asyncSystem.dispatchMainThreadTasks();
449-
449+
#endif
450450
Tile* pRootTile = this->_pTilesetContentManager->getRootTile();
451451
if (!pRootTile) {
452452
// If the root tile is marked as ready, but doesn't actually exist, then

Cesium3DTilesSelection/test/TestTileLoadRequester.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ TEST_CASE("TileLoadRequester") {
145145

146146
// Request this tile for main thread loading and verify it happens.
147147
requester.setMainThreadQueue({pToLoad});
148+
externals.asyncSystem.dispatchMainThreadTasks();
148149
pTileset->loadTiles();
149150
CHECK(pToLoad->getState() == TileLoadState::Done);
150151
}

Cesium3DTilesSelection/test/TestTilesetHeightQueries.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ TEST_CASE("Tileset height queries") {
6666

6767
while (!future.isReady()) {
6868
tileset.loadTiles();
69+
externals.asyncSystem.dispatchMainThreadTasks();
6970
}
7071

7172
SampleHeightResult results = future.waitInMainThread();
@@ -105,6 +106,7 @@ TEST_CASE("Tileset height queries") {
105106

106107
while (!future.isReady()) {
107108
tileset.loadTiles();
109+
externals.asyncSystem.dispatchMainThreadTasks();
108110
}
109111

110112
SampleHeightResult results = future.waitInMainThread();
@@ -139,6 +141,7 @@ TEST_CASE("Tileset height queries") {
139141

140142
while (!future.isReady()) {
141143
tileset.loadTiles();
144+
externals.asyncSystem.dispatchMainThreadTasks();
142145
}
143146

144147
SampleHeightResult results = future.waitInMainThread();
@@ -178,6 +181,7 @@ TEST_CASE("Tileset height queries") {
178181

179182
while (!future.isReady()) {
180183
tileset.loadTiles();
184+
externals.asyncSystem.dispatchMainThreadTasks();
181185
}
182186

183187
SampleHeightResult results = future.waitInMainThread();
@@ -213,6 +217,7 @@ TEST_CASE("Tileset height queries") {
213217

214218
while (!future.isReady()) {
215219
tileset.loadTiles();
220+
externals.asyncSystem.dispatchMainThreadTasks();
216221
}
217222

218223
SampleHeightResult results = future.waitInMainThread();
@@ -232,6 +237,7 @@ TEST_CASE("Tileset height queries") {
232237

233238
while (!future.isReady()) {
234239
tileset.loadTiles();
240+
externals.asyncSystem.dispatchMainThreadTasks();
235241
}
236242

237243
SampleHeightResult results = future.waitInMainThread();
@@ -251,6 +257,7 @@ TEST_CASE("Tileset height queries") {
251257

252258
while (!future.isReady()) {
253259
pTileset->loadTiles();
260+
externals.asyncSystem.dispatchMainThreadTasks();
254261
}
255262

256263
SampleHeightResult results = future.waitInMainThread();
@@ -293,6 +300,7 @@ TEST_CASE("Tileset height queries") {
293300

294301
while (!future.isReady()) {
295302
tileset.loadTiles();
303+
externals.asyncSystem.dispatchMainThreadTasks();
296304
}
297305

298306
SampleHeightResult results = future.waitInMainThread();
@@ -331,6 +339,7 @@ TEST_CASE("Tileset height queries") {
331339

332340
while (!future.isReady()) {
333341
tileset.loadTiles();
342+
externals.asyncSystem.dispatchMainThreadTasks();
334343
}
335344

336345
SampleHeightResult results = future.waitInMainThread();

Cesium3DTilesSelection/test/TestTilesetSelectionAlgorithm.cpp

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,11 @@ static void initializeTileset(Tileset& tileset) {
9393
horizontalFieldOfView,
9494
verticalFieldOfView,
9595
Ellipsoid::WGS84);
96-
96+
tileset.getExternals().asyncSystem.dispatchMainThreadTasks();
9797
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
98+
tileset.getExternals().asyncSystem.dispatchMainThreadTasks();
9899
tileset.loadTiles();
100+
99101
}
100102

101103
static ViewState zoomToTile(const Tile& tile) {
@@ -222,7 +224,9 @@ TEST_CASE("Test replace refinement for render") {
222224
ViewUpdateResult result = tileset.updateViewGroup(
223225
tileset.getDefaultViewGroup(),
224226
{zoomOutViewState});
227+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
225228
tileset.loadTiles();
229+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
226230

227231
// Check tile state. Ensure root meet sse
228232
REQUIRE(root->getState() == TileLoadState::Done);
@@ -284,6 +288,7 @@ TEST_CASE("Test replace refinement for render") {
284288
ViewUpdateResult result =
285289
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
286290
tileset.loadTiles();
291+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
287292

288293
// Check tile state. Ensure root doesn't meet sse, but children does.
289294
// Children begin loading as well
@@ -312,7 +317,7 @@ TEST_CASE("Test replace refinement for render") {
312317
ViewUpdateResult result =
313318
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
314319
tileset.loadTiles();
315-
320+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
316321
// Check tile state. Ensure root doesn't meet sse, but children does
317322
REQUIRE(root->getState() == TileLoadState::Done);
318323
REQUIRE(!doesTileMeetSSE(viewState, *root, tileset));
@@ -358,6 +363,7 @@ TEST_CASE("Test replace refinement for render") {
358363
tileset.getDefaultViewGroup(),
359364
{zoomInViewState});
360365
tileset.loadTiles();
366+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
361367

362368
// check tiles status. All the children should have loading status
363369
REQUIRE(root->getState() == TileLoadState::Done);
@@ -392,6 +398,7 @@ TEST_CASE("Test replace refinement for render") {
392398
tileset.getDefaultViewGroup(),
393399
{zoomInViewState});
394400
tileset.loadTiles();
401+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
395402

396403
// check tiles status. All the children should have loading status
397404
REQUIRE(root->getState() == TileLoadState::Done);
@@ -449,6 +456,7 @@ TEST_CASE("Test replace refinement for render") {
449456
tileset.getDefaultViewGroup(),
450457
{zoomOutViewState});
451458
tileset.loadTiles();
459+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
452460

453461
// check tiles status. All the children should have loading status
454462
REQUIRE(root->getState() == TileLoadState::Done);
@@ -498,6 +506,7 @@ TEST_CASE("Test replace refinement for render") {
498506
ViewUpdateResult result =
499507
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
500508
tileset.loadTiles();
509+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
501510

502511
// Check tile state. Ensure root doesn't meet sse, but children does
503512
REQUIRE(root->getState() == TileLoadState::Done);
@@ -525,6 +534,7 @@ TEST_CASE("Test replace refinement for render") {
525534
ViewUpdateResult result =
526535
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
527536
tileset.loadTiles();
537+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
528538

529539
// check tile states
530540
REQUIRE(root->getState() == TileLoadState::Done);
@@ -623,6 +633,7 @@ TEST_CASE("Test additive refinement") {
623633
ViewUpdateResult result =
624634
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
625635
tileset.loadTiles();
636+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
626637

627638
const std::vector<Tile::ConstPointer>& ttr =
628639
result.tilesToRenderThisFrame;
@@ -659,6 +670,7 @@ TEST_CASE("Test additive refinement") {
659670
ViewUpdateResult result =
660671
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
661672
tileset.loadTiles();
673+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
662674

663675
const std::vector<Tile::ConstPointer>& ttr =
664676
result.tilesToRenderThisFrame;
@@ -716,6 +728,7 @@ TEST_CASE("Test additive refinement") {
716728
ViewUpdateResult result =
717729
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
718730
tileset.loadTiles();
731+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
719732

720733
REQUIRE(result.tilesToRenderThisFrame.size() == 8);
721734

@@ -789,6 +802,7 @@ TEST_CASE("Render any tiles even when one of children can't be rendered for "
789802
ViewUpdateResult result =
790803
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
791804
tileset.loadTiles();
805+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
792806

793807
for (const Tile& child : root->getChildren()) {
794808
CHECK(child.getState() == TileLoadState::ContentLoading);
@@ -808,6 +822,7 @@ TEST_CASE("Render any tiles even when one of children can't be rendered for "
808822
ViewUpdateResult result =
809823
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
810824
tileset.loadTiles();
825+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
811826

812827
REQUIRE(root->isRenderable());
813828

@@ -908,6 +923,7 @@ TEST_CASE("Test multiple frustums") {
908923
tileset.getDefaultViewGroup(),
909924
{viewState, zoomOutViewState});
910925
tileset.loadTiles();
926+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
911927

912928
// Check tile state. Ensure root meets sse for only the zoomed out
913929
// ViewState
@@ -997,7 +1013,7 @@ TEST_CASE("Test multiple frustums") {
9971013
tileset.getDefaultViewGroup(),
9981014
{zoomInViewState1, zoomInViewState2});
9991015
tileset.loadTiles();
1000-
1016+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
10011017
// check result
10021018
// The grand child and the second child are the only ones rendered.
10031019
// The third and fourth children of the root are culled.
@@ -1289,6 +1305,8 @@ TEST_CASE("Makes metadata available on external tilesets") {
12891305
tileset.getDefaultViewGroup(),
12901306
{zoomToTileViewState});
12911307
tileset.loadTiles();
1308+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
1309+
12921310
pExternalContent = pExternal->getContent().getExternalContent();
12931311
}
12941312

@@ -1746,6 +1764,8 @@ TEST_CASE("Additive-refined tiles are added to the tilesFadingOut array") {
17461764
updateResult =
17471765
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {viewState});
17481766
tileset.loadTiles();
1767+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
1768+
17491769
}
17501770

17511771
// All three tiles (plus the tileset.json) should be rendered.
@@ -1766,6 +1786,8 @@ TEST_CASE("Additive-refined tiles are added to the tilesFadingOut array") {
17661786
updateResult =
17671787
tileset.updateViewGroup(tileset.getDefaultViewGroup(), {zoomedOut});
17681788
tileset.loadTiles();
1789+
tilesetExternals.asyncSystem.dispatchMainThreadTasks();
1790+
17691791

17701792
// Only the root tile (plus the tileset.json) is visible now, and the other
17711793
// two are fading out.

0 commit comments

Comments
 (0)