Commit 1522442
Implement an abstract Fence type to expose waiting for command buffer completion. (#1007)
The Fence type is modeled around the DX12 Fence. The closest equivalent
in Vulkan is a Timeline Semaphore. These are widely supported and
included in Vulkan 1.2. Metal provides the same functionality through
the SharedEvent type.
The abstract interface allows us to wait for GPU work to complete by
waiting on a signal value using:
```C++
Fence->waitForCompletion(SignalValue);
```
Signaling the value still requires downcasting because queue submission
is not done via an abstract interface yet.
---------
Co-authored-by: Marijn Suijten <marijn@traverseresearch.nl>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent dacdf0d commit 1522442
4 files changed
Lines changed: 244 additions & 61 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
59 | 73 | | |
60 | 74 | | |
61 | 75 | | |
| |||
77 | 91 | | |
78 | 92 | | |
79 | 93 | | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
80 | 97 | | |
81 | 98 | | |
82 | 99 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
293 | 293 | | |
294 | 294 | | |
295 | 295 | | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
296 | 372 | | |
297 | 373 | | |
298 | 374 | | |
| |||
346 | 422 | | |
347 | 423 | | |
348 | 424 | | |
349 | | - | |
350 | | - | |
351 | | - | |
352 | | - | |
353 | | - | |
354 | | - | |
| 425 | + | |
355 | 426 | | |
356 | 427 | | |
357 | 428 | | |
| |||
378 | 449 | | |
379 | 450 | | |
380 | 451 | | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
381 | 457 | | |
382 | 458 | | |
383 | 459 | | |
| |||
1136 | 1212 | | |
1137 | 1213 | | |
1138 | 1214 | | |
1139 | | - | |
1140 | | - | |
1141 | | - | |
1142 | | - | |
1143 | | - | |
1144 | | - | |
1145 | | - | |
1146 | | - | |
1147 | | - | |
1148 | | - | |
1149 | | - | |
1150 | | - | |
1151 | | - | |
1152 | | - | |
1153 | | - | |
1154 | | - | |
1155 | | - | |
1156 | 1215 | | |
1157 | 1216 | | |
1158 | 1217 | | |
1159 | 1218 | | |
| 1219 | + | |
1160 | 1220 | | |
1161 | 1221 | | |
1162 | | - | |
| 1222 | + | |
1163 | 1223 | | |
1164 | 1224 | | |
1165 | 1225 | | |
1166 | | - | |
1167 | | - | |
1168 | | - | |
1169 | | - | |
1170 | | - | |
1171 | | - | |
1172 | | - | |
1173 | | - | |
1174 | | - | |
1175 | | - | |
| 1226 | + | |
| 1227 | + | |
1176 | 1228 | | |
1177 | | - | |
1178 | | - | |
1179 | | - | |
1180 | | - | |
1181 | | - | |
1182 | | - | |
1183 | | - | |
1184 | | - | |
1185 | | - | |
1186 | | - | |
1187 | | - | |
1188 | | - | |
1189 | 1229 | | |
1190 | 1230 | | |
1191 | 1231 | | |
| |||
1690 | 1730 | | |
1691 | 1731 | | |
1692 | 1732 | | |
1693 | | - | |
1694 | | - | |
1695 | | - | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
1696 | 1737 | | |
1697 | 1738 | | |
1698 | 1739 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
86 | 117 | | |
87 | 118 | | |
88 | 119 | | |
| |||
130 | 161 | | |
131 | 162 | | |
132 | 163 | | |
| 164 | + | |
133 | 165 | | |
134 | 166 | | |
135 | 167 | | |
| |||
488 | 520 | | |
489 | 521 | | |
490 | 522 | | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
491 | 529 | | |
492 | | - | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
493 | 533 | | |
494 | 534 | | |
495 | 535 | | |
496 | 536 | | |
497 | 537 | | |
498 | 538 | | |
| 539 | + | |
499 | 540 | | |
500 | 541 | | |
501 | 542 | | |
| |||
565 | 606 | | |
566 | 607 | | |
567 | 608 | | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
568 | 614 | | |
569 | 615 | | |
570 | 616 | | |
| |||
589 | 635 | | |
590 | 636 | | |
591 | 637 | | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
592 | 643 | | |
593 | 644 | | |
594 | 645 | | |
| |||
0 commit comments