36 Commits
Author SHA1 Message Date
rboullard 2fcb2fd64c SwapChain
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m8s
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m12s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: game) (push) Successful in 42s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 46s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 2m17s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m8s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m30s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m47s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m28s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m35s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: game) (push) Successful in 46s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m55s
Bigfoot / Clang Format Checks (push) Successful in 10s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m17s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m42s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m50s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: game) (push) Successful in 51s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m11s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m49s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m16s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m18s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 2m23s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m24s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m43s
2026-09-13 17:55:54 +02:00
rboullard df985d0397 VulkanImage
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m6s
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m11s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m19s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m17s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m50s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m26s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 1m43s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m12s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: game) (push) Successful in 45s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 46s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m43s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m6s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: game) (push) Successful in 51s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m12s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 1m47s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m29s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m34s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m17s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: game) (push) Successful in 48s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 51s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m19s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m23s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m48s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m50s
Bigfoot / Clang Format Checks (push) Successful in 12s
2026-09-13 10:59:20 +02:00
rboullard 130ea26f4f PixelFormat
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m7s
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m12s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: game) (push) Successful in 43s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 47s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m17s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m44s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m9s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m25s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: game) (push) Successful in 53s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m14s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 1m44s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m16s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m12s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m52s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 1m51s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m30s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m35s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: game) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 50s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m16s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m43s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m53s
Bigfoot / Clang Format Checks (push) Successful in 11s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m16s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m20s
2026-09-13 10:58:32 +02:00
rboullard 1799ff01c4 Graphics device
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m13s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m16s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m52s
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m3s
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m10s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: game) (push) Successful in 40s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 45s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m42s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m3s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m25s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 1m47s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: game) (push) Successful in 50s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m10s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 1m41s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m36s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m13s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m18s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m42s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m50s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m30s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m15s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: game) (push) Successful in 48s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m20s
Bigfoot / Clang Format Checks (push) Successful in 10s
2026-09-13 07:58:29 +02:00
rboullard 3cde56717f EqualNoCase
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m4s
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m5s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 47s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m9s
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: game) (push) Successful in 42s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 2m9s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m40s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m19s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m6s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m44s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m27s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m46s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: game) (push) Successful in 59s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: game) (push) Successful in 48s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m38s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m31s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: game) (push) Successful in 47s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 2m18s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m18s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m44s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m7s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m16s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 53s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m52s
Bigfoot / Clang Format Checks (push) Successful in 10s
2026-09-13 07:36:43 +02:00
rboullard cd5f7b3823 Avoid SIOF inside Asset system
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m1s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m7s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m37s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m33s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m6s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m10s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 48s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 2m11s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m51s
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m7s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: game) (push) Successful in 44s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 48s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 2m7s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m12s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m43s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m49s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m1s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m17s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: game) (push) Successful in 47s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m43s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m27s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: game) (push) Successful in 45s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m16s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m43s
Bigfoot / Clang Format Checks (push) Successful in 9s
2026-09-13 06:58:51 +02:00
rboullard e1e16268a2 LazyGlobal
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m5s
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m12s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: game) (push) Successful in 45s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 48s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 2m17s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m18s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m48s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m58s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m3s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m28s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: game) (push) Successful in 53s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m12s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m46s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m50s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m30s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m37s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m16s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m17s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: game) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 52s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 2m20s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m24s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m58s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m49s
Bigfoot / Clang Format Checks (push) Successful in 10s
Will help us avoid SIOF
2026-09-12 16:16:36 +02:00
rboullard c4e9f6f7d9 Refactoring generate scripts + scoped asan disabler
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m7s
Bigfoot / Build & Test Debug with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m10s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: game) (push) Successful in 46s
Bigfoot / Build & Test Debug with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 50s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 6m1s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m21s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m49s
Bigfoot / Build & Test Debug with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m56s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m2s
Bigfoot / Build & Test Release with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m27s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: game) (push) Successful in 49s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 9m26s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m39s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m18s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 52s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 7m59s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 2m23s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m58s
Bigfoot / Build & Test Release with clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m13s
Bigfoot / Build & Test Release with clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m51s
Bigfoot / Build & Test Release with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m32s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: OFF, Variant: game) (push) Successful in 1m12s
Bigfoot / Build & Test RelWithDebInfo with clang (Unity Build: ON, Variant: game) (push) Successful in 50s
Bigfoot / Build & Test RelWithDebInfo with clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m50s
Bigfoot / Clang Format Checks (push) Successful in 12s
2026-09-12 10:37:06 +02:00
rboullard 6ee035843e Add a sanitizer target macro 2026-09-12 10:32:49 +02:00
rboullard 3c19e0e931 fix asan release
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 44s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m10s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m17s
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m12s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m21s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 49s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m43s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m54s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m5s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m24s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 48s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m12s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 8m47s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 23s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 23s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m9s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m18s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 51s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 50s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m12s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m55s
Bigfoot / Clang Format Checks (push) Failing after 9s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m47s
2026-09-12 01:34:27 +02:00
rboullard fc2f947557 fix asan release
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m7s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m6s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 44s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 48s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m6s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m18s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m54s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m24s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 47s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m3s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m9s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Clang Format Checks (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Canceled after 28s
2026-09-12 01:17:47 +02:00
rboullard 2cce2e40e6 use weston-run
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m9s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 43s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m11s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 2m6s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m19s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m47s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m53s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m2s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m24s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 49s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m11s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 24s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 23s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 23s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m18s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 54s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Canceled after 3m13s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 26s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 11m47s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 50s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Clang Format Checks (push) Canceled after 0s
2026-09-12 00:41:47 +02:00
rboullard 22e16561dc use weston-run
Bigfoot / Clang Format Checks (push) Canceled after 0s
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
2026-09-12 00:41:09 +02:00
rboullard 8d86fe007e Fix build 2026-09-12 00:30:47 +02:00
rboullard 087114b21b Switching to SDL and Wayland
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 9m17s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m10s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 43s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 3m39s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 2m18s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m45s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m53s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 11m24s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 34s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 29s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 31s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 3m54s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 25s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 25s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 23s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Canceled after 0s
Bigfoot / Clang Format Checks (push) Canceled after 0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Canceled after 28s
2026-09-12 00:00:22 +02:00
rboullard 5703e25773 Fix benchmarks not setuping LOG correctly 2026-09-11 23:54:15 +02:00
rboullard 71dfb57179 Fix X11 macro pollution on Linux
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 56s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 54s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 54s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m45s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 43s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 45s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 54s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m52s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 1m1s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 1m2s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 46s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 50s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 1m5s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 1m11s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m41s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m50s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 31s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 27s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 27s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 32s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 37s
Bigfoot / Clang Format Checks (push) Successful in 11s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 30s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 30s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 33s
2026-09-09 10:20:04 +02:00
rboullard d8b7698d4b Update mimalloc
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 35s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 42s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 40s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 34s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 48s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 51s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 39s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 34s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m53s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 44s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 1m45s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 1m59s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 30s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 27s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 32s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 39s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 40s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 34s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 27s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 37s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 39s
Bigfoot / Clang Format Checks (push) Successful in 11s
2026-09-09 00:46:56 +02:00
rboullard e27d69b36e VulkanSurface 2026-09-09 00:46:41 +02:00
rboullard 7f3b46867f Graphics queue 2026-09-09 00:37:10 +02:00
rboullard fcf9bfa19e VulkanInstance 2026-09-09 00:31:38 +02:00
rboullard 6895daa676 VulkanFormatters 2026-09-09 00:05:05 +02:00
rboullard 246ea70e93 GraphicsAPI 2026-09-08 23:36:37 +02:00
rboullard 7e6c2b62f3 _genrated include in their own section
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 40s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m7s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 44s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 21s
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 58s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m3s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m3s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 54s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m11s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 42s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 59s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 19s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 22s
Bigfoot / Clang Format Checks (push) Successful in 10s
2026-09-08 23:36:05 +02:00
rboullard 2e512ad556 Fix logger in graphicsvulkan
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m3s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 41s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 22s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 54s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 41s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m4s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m11s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 46s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 23s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 54s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m11s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 43s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 1m0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 22s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Clang Format Checks (push) Successful in 9s
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
2026-09-08 22:38:47 +02:00
rboullard db0b5da1f3 GraphicsVulkan setup
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m0s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m6s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m9s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 42s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 44s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 19s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 22s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 54s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 59s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 20s
Bigfoot / Clang Format Checks (push) Failing after 10s
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m1s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 40s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 59s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 43s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 22s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 20s
2026-09-08 22:32:54 +02:00
rboullard aef49e7f11 Add factory
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 22s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 22s
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 22s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 22s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 22s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 22s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 23s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 23s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 22s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 22s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 22s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 22s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 19s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Clang Format Checks (push) Failing after 12s
2026-09-08 22:31:28 +02:00
rboullard 10f4a09c37 Transition flat enums to Bigfoot namespace + dependencies update + clang format update + remove outdated README
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 28s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 23s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 19s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 23s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 19s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 23s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 25s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 23s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 19s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 25s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 24s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 23s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Clang Format Checks (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 24s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 26s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 19s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 22s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
2026-09-08 22:16:59 +02:00
rboullard 0c3974cdec Use mimalloc from conan center
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 12s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 16s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 58s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 29s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 46s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 12s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 6s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 12s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m11s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 27s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 29s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 8s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 7s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 7s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 52s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 51s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 32s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 35s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 12s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 8s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 7s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 40s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 7s
Bigfoot / Clang Format Checks (push) Failing after 9s
2026-09-04 08:18:26 +02:00
rboullard 2303fe6182 Remove old tracy
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m5s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 28s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 45s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m16s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 32s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m21s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m44s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m1s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m6s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m18s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 52s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 37s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m29s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m6s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m10s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 40s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 56s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 57s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 28s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 48s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m25s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 53s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 53s
Bigfoot / Clang Format Checks (push) Failing after 9s
2026-09-04 08:16:09 +02:00
rboullard 23f623d9de Fix VulkanMemoryAllocator dependency not resolved
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 30s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m18s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m24s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m0s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m8s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 43s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 48s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 43s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m6s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 34s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 37s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m22s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 57s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 29s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 48s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 56s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m2s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 53s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m29s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m8s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m12s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 39s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 54s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m1s
Bigfoot / Clang Format Checks (push) Failing after 35s
2026-09-04 08:15:50 +02:00
rboullard 16d5d0fffb Don't use magic numbers
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 9s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 9s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 11s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 9s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 9s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 11s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 9s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 9s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 9s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 11s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 11s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 11s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 11s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 8s
Bigfoot / Clang Format Checks (push) Failing after 10s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 9s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 8s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 10s
2026-09-03 00:05:13 +02:00
rboullard f82d40532c Refactor Bigfoot files layout + Create our three graphics libraries
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 12s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 11s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 9s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 15s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 9s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 10s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 11s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 10s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 9s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 10s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 11s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Failing after 9s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Failing after 9s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 11s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 12s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 10s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 9s
Bigfoot / Clang Format Checks (push) Failing after 12s
2026-09-03 00:02:09 +02:00
rboullard 310d16b9ed Move tools in their own folder instead of Bigfoot Sources 2026-09-02 23:32:44 +02:00
rboullard 9f034fed3c Merge branch 'main' of https://git.romainboullard.com/BigfootDev/Bigfoot into Development
Bigfoot / Sonarqube (game) (push) Successful in 4m54s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 43s
Bigfoot / Sonarqube (toolmode) (push) Failing after 5m22s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 47s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 27s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 30s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m19s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m25s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m1s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m7s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 50s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 53s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 32s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 37s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m23s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m30s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m5s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 53s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 28s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m13s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 36s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 44s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m0s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m4s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 51s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 58s
Bigfoot / Clang Format Checks (push) Successful in 11s
2026-09-02 23:12:39 +02:00
rboullard 33a79ed12f Game analysis for SonarQube (#5)
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 29s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m23s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m8s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 45s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m8s
Bigfoot / Clang Format Checks (push) Successful in 13s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 49s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 31s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m30s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m3s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 56s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 34s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 41s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m27s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m35s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m16s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 37s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 56s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 29s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m2s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 53s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m3s
Bigfoot / Sonarqube (game) (push) Successful in 5m17s
Bigfoot / Sonarqube (toolmode) (push) Successful in 5m39s
Reviewed-on: #5
Co-authored-by: Romain BOULLARD <romain.boullard@protonmail.com>
2026-09-02 13:55:27 +00:00
216 changed files with 4180 additions and 308 deletions
+52 -16
View File
@@ -121,36 +121,72 @@ SpaceInEmptyBlock: true
PenaltyBreakAssignment: 200
KeepEmptyLinesAtTheStartOfBlocks: false
IncludeCategories:
- Regex: '^<Engine/'
- Regex: '^<GraphicsCore/.*_generated\.h(pp)?>$'
Priority: 16
- Regex: '^<GraphicsVulkan/.*_generated\.h(pp)?>$'
Priority: 17
- Regex: '^<GraphicsInterface/.*_generated\.h(pp)?>$'
Priority: 18
- Regex: '^<Engine/.*_generated\.h(pp)?>$'
Priority: 19
- Regex: '^<System/.*_generated\.h(pp)?>$'
Priority: 20
- Regex: '^<Utils/.*_generated\.h(pp)?>$'
Priority: 21
- Regex: '^<SasquatchBaker/.*_generated\.h(pp)?>$'
Priority: 22
- Regex: '^<EngineTests/.*_generated\.h(pp)?>$'
Priority: 23
- Regex: '^<SystemTests/.*_generated\.h(pp)?>$'
Priority: 24
- Regex: '^<UtilsTests/.*_generated\.h(pp)?>$'
Priority: 25
- Regex: '^<AssetsForTesting/.*_generated\.h(pp)?>$'
Priority: 26
- Regex: '^<SasquatchBakerTests/.*_generated\.h(pp)?>$'
Priority: 27
- Regex: '^<EngineBenchmarks/.*_generated\.h(pp)?>$'
Priority: 28
- Regex: '^<AssetsForBenchmarking/.*_generated\.h(pp)?>$'
Priority: 29
- Regex: '^<SasquatchBakerBenchmarks/.*_generated\.h(pp)?>$'
Priority: 30
- Regex: '^<GraphicsCore/'
Priority: 1
- Regex: '^<System/'
- Regex: '^<GraphicsVulkan/'
Priority: 2
- Regex: '^<Utils/'
- Regex: '^<GraphicsInterface/'
Priority: 3
- Regex: '^<SasquatchBaker/'
- Regex: '^<Engine/'
Priority: 4
- Regex: '^<EngineTests/'
- Regex: '^<System/'
Priority: 5
- Regex: '^<SystemTests/'
- Regex: '^<Utils/'
Priority: 6
- Regex: '^<UtilsTests/'
- Regex: '^<SasquatchBaker/'
Priority: 7
- Regex: '^<AssetsForTesting/'
- Regex: '^<EngineTests/'
Priority: 8
- Regex: '^<SasquatchBakerTests/'
- Regex: '^<SystemTests/'
Priority: 9
- Regex: '^<EngineBenchmarks/'
- Regex: '^<UtilsTests/'
Priority: 10
- Regex: '^<AssetsForBenchmarking/'
- Regex: '^<AssetsForTesting/'
Priority: 11
- Regex: '^<SasquatchBakerBenchmarks/'
- Regex: '^<SasquatchBakerTests/'
Priority: 12
- Regex: '^<[a-zA-Z0-9_/]+\.h>'
- Regex: '^<EngineBenchmarks/'
Priority: 13
- Regex: '^<[a-zA-Z0-9_/]+\.hpp>'
Priority: 13
- Regex: '^<[a-zA-Z0-9_/]+>'
- Regex: '^<AssetsForBenchmarking/'
Priority: 14
- Regex: '^<SasquatchBakerBenchmarks/'
Priority: 15
- Regex: '^<[a-zA-Z0-9_/]+\.h>'
Priority: 31
- Regex: '^<[a-zA-Z0-9_/]+\.hpp>'
Priority: 31
- Regex: '^<[a-zA-Z0-9_/]+>'
Priority: 32
MainIncludeChar: AngleBracket
Macros:
- 'BIGFOOT_OPTIMIZED_ONLY(x)=x'
+14 -12
View File
@@ -15,13 +15,16 @@ jobs:
strategy:
matrix:
build_type: ["Debug", "RelWithDebInfo", "Release"]
build_type:
- { value: "Debug", profile: "debug" }
- { value: "RelWithDebInfo", profile: "relwithdebinfo" }
- { value: "Release", profile: "release" }
unity_build: ["ON", "OFF"]
conan_profile: ["./ConanProfiles/host/clang", "./ConanProfiles/host/clang_asan"]
conan_profile: ["clang", "clang_asan"]
variant:
- { value: "True", name: "toolmode" }
- { value: "False", name: "game" }
name: "Build & Test ${{ matrix.build_type }} with ${{ matrix.conan_profile }} (Unity Build: ${{ matrix.unity_build }}, Variant: ${{ matrix.variant.name }})"
name: "Build & Test ${{ matrix.build_type.value }} with ${{ matrix.conan_profile }} (Unity Build: ${{ matrix.unity_build }}, Variant: ${{ matrix.variant.name }})"
steps:
- name: Install Node.js
run: apt-get update && apt-get install -y nodejs
@@ -33,18 +36,17 @@ jobs:
- name: Build
run: |
conan install . --remote=bigfootpackages -pr:h=${{ matrix.conan_profile }} -pr:b=./ConanProfiles/build/clang --build=missing -s build_type=${{ matrix.build_type }} -o bigfoot/*:build_tests=True -o bigfoot/*:build_benchmarks=True -o bigfoot/*:tracy=False -o bigfoot/*:vulkan=True -o bigfoot/*:toolmode=${{ matrix.variant.value }} -of build-${{ matrix.variant.name }}
. ./build-${{ matrix.variant.name }}/build/${{ matrix.build_type }}/generators/conanbuild.sh
cmake -S . -B ./build-${{ matrix.variant.name }}/${{ matrix.build_type }} --toolchain ./build-${{ matrix.variant.name }}/build/${{ matrix.build_type }}/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_UNITY_BUILD=${{ matrix.unity_build }} -G "Ninja"
cmake --build build-${{ matrix.variant.name }}/${{ matrix.build_type }} --parallel $(nproc)
. ./build-${{ matrix.variant.name }}/build/${{ matrix.build_type }}/generators/deactivate_conanbuild.sh
bash ./generate_bigfoot.sh missing ${{ matrix.build_type.value }} --profile=${{ matrix.conan_profile }} --variant=${{ matrix.variant.name }} --unity=${{ matrix.unity_build }} --tracy=False
. ./build-linux-${{ matrix.variant.name }}/build/${{ matrix.build_type.value }}/generators/conanbuild.sh
cmake --build build-linux-${{ matrix.variant.name }}/${{ matrix.build_type.value }} --parallel $(nproc)
. ./build-linux-${{ matrix.variant.name }}/build/${{ matrix.build_type.value }}/generators/deactivate_conanbuild.sh
- name: Unit Tests
run: |
cd ./build-${{ matrix.variant.name }}/${{ matrix.build_type }}
. ../../build-${{ matrix.variant.name }}/build/${{ matrix.build_type }}/generators/conanbuild.sh
xvfb-run ctest . --output-on-failure
. ../../build-${{ matrix.variant.name }}/build/${{ matrix.build_type }}/generators/deactivate_conanbuild.sh
cd ./build-linux-${{ matrix.variant.name }}/${{ matrix.build_type.value }}
. ../../build-linux-${{ matrix.variant.name }}/build/${{ matrix.build_type.value }}/generators/conanbuild.sh
weston-run ctest . --output-on-failure
. ../../build-linux-${{ matrix.variant.name }}/build/${{ matrix.build_type.value }}/generators/deactivate_conanbuild.sh
clang-format:
runs-on: ubuntu-latest
+14 -15
View File
@@ -42,24 +42,23 @@ jobs:
- name: Build
run: |
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/host/clang_coverage -pr:b=./ConanProfiles/build/clang --build=missing -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:build_benchmarks=True -o bigfoot/*:tracy=False -o bigfoot/*:toolmode=${{ matrix.variant.value }} -o bigfoot/*:vulkan=True -of build-${{ matrix.variant.name }}
. ./build-${{ matrix.variant.name }}/build/Debug/generators/conanbuild.sh
cmake -S . -B ./build-${{ matrix.variant.name }}/Debug --toolchain ./build-${{ matrix.variant.name }}/build/Debug/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Debug -G "Ninja"
cmake --build build-${{ matrix.variant.name }}/Debug --parallel $(nproc)
. ./build-${{ matrix.variant.name }}/build/Debug/generators/deactivate_conanbuild.sh
bash ./generate_bigfoot.sh missing Debug --profile=clang_coverage --variant=${{ matrix.variant.name }} --tracy=False
. ./build-linux-${{ matrix.variant.name }}/build/Debug/generators/conanbuild.sh
cmake --build build-linux-${{ matrix.variant.name }}/Debug --parallel $(nproc)
. ./build-linux-${{ matrix.variant.name }}/build/Debug/generators/deactivate_conanbuild.sh
- name: Run tests
run: |
cd ./build-${{ matrix.variant.name }}/Debug
. ../../build-${{ matrix.variant.name }}/build/Debug/generators/conanbuild.sh
LLVM_PROFILE_FILE="%p.profraw%c" xvfb-run ctest --output-on-failure
. ../../build-${{ matrix.variant.name }}/build/Debug/generators/deactivate_conanbuild.sh
cd ./build-linux-${{ matrix.variant.name }}/Debug
. ../../build-linux-${{ matrix.variant.name }}/build/Debug/generators/conanbuild.sh
LLVM_PROFILE_FILE="%p.profraw%c" weston-run ctest --output-on-failure
. ../../build-linux-${{ matrix.variant.name }}/build/Debug/generators/deactivate_conanbuild.sh
- name: Clang-Tidy
run: run-clang-tidy -p ./build-${{ matrix.variant.name }}/Debug/ > tidy_result.txt
run: run-clang-tidy -p ./build-linux-${{ matrix.variant.name }}/Debug/ > tidy_result.txt
- name: Infer
run: infer run --compilation-database build-${{ matrix.variant.name }}/Debug/compile_commands.json
run: infer run --compilation-database build-linux-${{ matrix.variant.name }}/Debug/compile_commands.json
- name: Generate coverage report
shell: bash
@@ -69,8 +68,8 @@ jobs:
# rejects outright ("Wrong major version"). Bypassing gcovr's JSON
# path entirely: llvm-cov's lcov exporter is a separate, unaffected
# code path, so merge -> export lcov -> convert lcov to Cobertura.
llvm-profdata merge -sparse $(find build-${{ matrix.variant.name }}/Debug -name "*.profraw") -o merged.profdata
BINARIES=($(find build-${{ matrix.variant.name }}/Debug -maxdepth 8 -type f -executable -iname "*Tests"))
llvm-profdata merge -sparse $(find build-linux-${{ matrix.variant.name }}/Debug -name "*.profraw") -o merged.profdata
BINARIES=($(find build-linux-${{ matrix.variant.name }}/Debug -maxdepth 8 -type f -executable -iname "*Tests"))
OBJECT_ARGS=$(printf -- '-object %s ' "${BINARIES[@]:1}")
llvm-cov export -format=lcov -instr-profile=merged.profdata "${BINARIES[0]}" $OBJECT_ARGS > coverage.lcov
# lcov_cobertura isn't preinstalled on the image; inject it into
@@ -85,8 +84,8 @@ jobs:
-Dsonar.projectKey=${{ matrix.variant.projectKey }}
"-Dsonar.projectName=${{ matrix.variant.projectName }}"
-Dsonar.projectVersion=${{ steps.version.outputs.version }}
-Dsonar.cxx.jsonCompilationDatabase=./build-${{ matrix.variant.name }}/Debug/compile_commands.json
-Dsonar.cxx.xunit.reportPaths=build-${{ matrix.variant.name }}/Debug/TestResults/*.xml
-Dsonar.cxx.jsonCompilationDatabase=./build-linux-${{ matrix.variant.name }}/Debug/compile_commands.json
-Dsonar.cxx.xunit.reportPaths=build-linux-${{ matrix.variant.name }}/Debug/TestResults/*.xml
-Dsonar.qualitygate.wait=true
${{ github.event_name == 'pull_request' &&
format('-Dsonar.pullrequest.key={0} -Dsonar.pullrequest.branch={1} -Dsonar.pullrequest.base={2} -Dsonar.analysis.sqbot={3}',
@@ -12,6 +12,4 @@ bigfoot_create_package_lib(
"${PrivateDependencies}"
"${BigfootPublicDependencies}"
"${BigfootPrivateDependencies}"
"")
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Benchmarks/Bigfoot)
"Bigfoot/Benchmarks")
+1 -3
View File
@@ -2,6 +2,4 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/AssetsForBenchmarking)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Engine)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Utils)
if(${TOOLMODE})
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Tools)
endif()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Graphics)
@@ -36,7 +36,7 @@ class ReferenceFixture: public benchmark::Fixture
void TearDown(benchmark::State&) override
{
SetActiveAssetLibrary(&g_assetLibrary);
SetActiveAssetLibrary(g_assetLibrary);
}
AssetLibrary m_library;
@@ -9,11 +9,11 @@
#include <System/File/File.hpp>
#include <System/UUID/UUID.hpp>
#include <EngineBenchmarks/BigFileInfo_generated.hpp>
#include <AssetsForBenchmarking/Asset/BenchmarkAsset.hpp>
#include <AssetsForBenchmarking/Asset/BenchmarkAssetReferred.hpp>
#include <EngineBenchmarks/BigFileInfo_generated.hpp>
#include <EASTL/optional.h>
#include <EASTL/span.h>
#include <EASTL/vector.h>
+2 -2
View File
@@ -2,13 +2,13 @@ get_filename_component(PackageName ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${PackageName}Benchmarks)
bigfoot_create_package_benchmarks(
"")
"Bigfoot/Benchmarks")
target_link_libraries(${PROJECT_NAME}
PRIVATE
effolkronium_random
$<LINK_LIBRARY:WHOLE_ARCHIVE,AssetsForBenchmarking>)
bigfoot_create_bigfile("Benchmarks/Bigfoot")
bigfoot_create_bigfile("Bigfoot/Benchmarks")
bigfoot_create_sasquatch_info()
@@ -9,11 +9,11 @@
#include <System/File/File.hpp>
#include <System/UUID/UUID.hpp>
#include <EngineBenchmarks/SasquatchInfo_generated.hpp>
#include <AssetsForBenchmarking/Asset/BenchmarkAsset.hpp>
#include <AssetsForBenchmarking/Asset/BenchmarkAssetReferred.hpp>
#include <EngineBenchmarks/SasquatchInfo_generated.hpp>
#include <EASTL/optional.h>
#include <EASTL/span.h>
#include <EASTL/vector.h>
+26
View File
@@ -0,0 +1,26 @@
/*********************************************************************
* \file main.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <Utils/Log/LogMacros.hpp>
#include <Utils/TargetMacros.h>
#include <benchmark/benchmark.h>
int main(int argc, char** argv)
{
BIGFOOT_NOT_OPTIMIZED_ONLY(::Bigfoot::Singleton<::Bigfoot::Log>::Lifetime m_lifetime);
::benchmark::Initialize(&argc, argv);
if (::benchmark::ReportUnrecognizedArguments(argc, argv))
{
return 1;
}
::benchmark::RunSpecifiedBenchmarks();
::benchmark::Shutdown();
return 0;
}
@@ -0,0 +1,4 @@
if(${VULKAN})
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/GraphicsVulkan)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/GraphicsCore)
endif()
@@ -0,0 +1,5 @@
get_filename_component(PackageName ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${PackageName}Benchmarks)
bigfoot_create_package_benchmarks(
"Bigfoot/Benchmarks/Graphics")
@@ -0,0 +1,26 @@
/*********************************************************************
* \file main.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <Utils/Log/LogMacros.hpp>
#include <Utils/TargetMacros.h>
#include <benchmark/benchmark.h>
int main(int argc, char** argv)
{
BIGFOOT_NOT_OPTIMIZED_ONLY(::Bigfoot::Singleton<::Bigfoot::Log>::Lifetime m_lifetime);
::benchmark::Initialize(&argc, argv);
if (::benchmark::ReportUnrecognizedArguments(argc, argv))
{
return 1;
}
::benchmark::RunSpecifiedBenchmarks();
::benchmark::Shutdown();
return 0;
}
@@ -0,0 +1,5 @@
get_filename_component(PackageName ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${PackageName}Benchmarks)
bigfoot_create_package_benchmarks(
"Bigfoot/Benchmarks/Graphics")
@@ -0,0 +1,26 @@
/*********************************************************************
* \file main.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <Utils/Log/LogMacros.hpp>
#include <Utils/TargetMacros.h>
#include <benchmark/benchmark.h>
int main(int argc, char** argv)
{
BIGFOOT_NOT_OPTIMIZED_ONLY(::Bigfoot::Singleton<::Bigfoot::Log>::Lifetime m_lifetime);
::benchmark::Initialize(&argc, argv);
if (::benchmark::ReportUnrecognizedArguments(argc, argv))
{
return 1;
}
::benchmark::RunSpecifiedBenchmarks();
::benchmark::Shutdown();
return 0;
}
+1 -1
View File
@@ -2,4 +2,4 @@ get_filename_component(PackageName ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${PackageName}Benchmarks)
bigfoot_create_package_benchmarks(
"")
"Bigfoot/Benchmarks")
+26
View File
@@ -0,0 +1,26 @@
/*********************************************************************
* \file main.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <Utils/Log/LogMacros.hpp>
#include <Utils/TargetMacros.h>
#include <benchmark/benchmark.h>
int main(int argc, char** argv)
{
BIGFOOT_NOT_OPTIMIZED_ONLY(::Bigfoot::Singleton<::Bigfoot::Log>::Lifetime m_lifetime);
::benchmark::Initialize(&argc, argv);
if (::benchmark::ReportUnrecognizedArguments(argc, argv))
{
return 1;
}
::benchmark::RunSpecifiedBenchmarks();
::benchmark::Shutdown();
return 0;
}
@@ -1,6 +1,4 @@
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Utils)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/System)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Engine)
if(${TOOLMODE})
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Tools)
endif()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Graphics)
@@ -21,4 +21,4 @@ bigfoot_create_package_lib(
"${PrivateDependencies}"
"${BigfootPublicDependencies}"
"${BigfootPrivateDependencies}"
"")
"Bigfoot/Libs")
@@ -10,9 +10,10 @@
#include <Engine/Asset/AssetConcepts.hpp>
#include <Engine/Asset/AssetContainer.hpp>
#include <Engine/Asset/AssetLibrary.hpp>
#include <Engine/Asset/Asset_generated.hpp>
#include <Engine/EngineAssertHandler.hpp>
#include <Engine/Asset/Asset_generated.hpp>
#include <EASTL/span.h>
#include <EASTL/vector.h>
#include <ankerl/unordered_dense.h>
@@ -6,10 +6,10 @@
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ASSET_ASSETBASE_HPP
#define BIGFOOT_ENGINE_ASSET_ASSETBASE_HPP
#include <Engine/Asset/Asset_generated.hpp>
#include <System/UUID/UUID.hpp>
#include <Engine/Asset/Asset_generated.hpp>
#include <EASTL/span.h>
#include <EASTL/vector.h>
#include <ankerl/unordered_dense.h>
@@ -19,13 +19,14 @@
return AssetType::GetTypeID(); \
} \
AssetContainer<AssetType> g_containerFor##AssetName; \
const bool g_insertedContainerFor##AssetName = []() \
bool RegisterAssetContainerFor##AssetName() \
{ \
const bool inserted = g_assetLibrary.Insert(&g_containerFor##AssetName); \
const bool inserted = g_assetLibrary->Insert(&g_containerFor##AssetName); \
CRITICAL_ASSERT(EngineAssertHandler, \
inserted, \
"AssetTypeID collision or duplicate registration for asset type '" #AssetName "'"); \
return inserted; \
}(); \
} \
const bool g_insertedContainerFor##AssetName = RegisterAssetContainerFor##AssetName(); \
}
#endif
@@ -10,6 +10,8 @@
#include <Engine/Asset/AssetContainer.hpp>
#include <Engine/Asset/AssetTypeID.hpp>
#include <Utils/LazyGlobal.hpp>
#include <ankerl/unordered_dense.h>
namespace Bigfoot
@@ -109,8 +111,44 @@ class AssetLibrary
/****************************************************************************************/
// The global asset library for Bigfoot
inline AssetLibrary g_assetLibrary;
inline AssetLibrary* g_activeAssetLibrary = &g_assetLibrary;
inline LazyGlobal<AssetLibrary> g_assetLibrary;
class ActiveAssetLibrary
{
public:
ActiveAssetLibrary& operator=(AssetLibrary* p_assetLibrary)
{
Get() = p_assetLibrary;
return *this;
}
[[nodiscard]]
AssetLibrary* operator->() const
{
return Get();
}
[[nodiscard]]
operator AssetLibrary*() const
{
return Get();
}
private:
/**
* Get the ActiveAssetLibrary
*
* \return The ActiveAssetLibrary
*/
[[nodiscard]]
static AssetLibrary*& Get()
{
static AssetLibrary* activeLibrary = g_assetLibrary;
return activeLibrary;
}
};
inline ActiveAssetLibrary g_activeAssetLibrary;
/****************************************************************************************/
@@ -6,10 +6,10 @@
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ENGINEASSERTHANDLER_HPP
#define BIGFOOT_ENGINE_ENGINEASSERTHANDLER_HPP
#include <Engine/EngineLogger_generated.hpp>
#include <Utils/Assert/AssertHandler.hpp>
#include <Engine/EngineLogger_generated.hpp>
#ifdef BIGFOOT_NOT_OPTIMIZED
namespace Bigfoot
@@ -15,7 +15,7 @@ namespace Bigfoot
/*
* Logger
*/
inline Log::LoggerInfo ENGINE_LOGGER { .m_name = "ENGINE_LOGGER", .m_level = Flat::LogLevel::Trace};
inline Log::LoggerInfo ENGINE_LOGGER { .m_name = "ENGINE_LOGGER", .m_level = LogLevel::Trace};
} // namespace Bigfoot
#endif
#endif
+5
View File
@@ -0,0 +1,5 @@
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/GraphicsInterface)
if(${VULKAN})
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/GraphicsVulkan)
endif()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/GraphicsCore)
@@ -0,0 +1,18 @@
get_filename_component(PackageName ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${PackageName})
set(PublicDependencies)
set(PrivateDependencies)
set(BigfootPublicDependencies
GraphicsVulkan
Engine)
set(BigfootPrivateDependencies)
bigfoot_create_package_lib(
"${PublicDependencies}"
"${PrivateDependencies}"
"${BigfootPublicDependencies}"
"${BigfootPrivateDependencies}"
"Bigfoot/Libs/Graphics")
bigfoot_create_logger()
@@ -0,0 +1,71 @@
/*********************************************************************
* \file GraphicsContext.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <GraphicsCore/GraphicsContext.hpp>
#include <GraphicsCore/GraphicsCoreAssertHandler.hpp>
namespace Bigfoot
{
GraphicsContext::GraphicsContext(const GraphicsContextCreateInfo& p_createInfo)
{
m_instance = g_graphicsInstanceFactory->Create(p_createInfo.m_api,
p_createInfo.m_applicationName,
p_createInfo.m_applicationVersion);
CRITICAL_ASSERT(GraphicsCoreAssertHandler,
m_instance != nullptr,
"No graphics instance registered for GraphicsAPI '{}'",
EnumNameGraphicsAPI(p_createInfo.m_api));
m_surface = g_graphicsSurfaceFactory->Create(p_createInfo.m_api, *m_instance, p_createInfo.m_surfaceCreateInfo);
CRITICAL_ASSERT(GraphicsCoreAssertHandler,
m_surface != nullptr,
"No graphics surface registered for GraphicsAPI '{}'",
EnumNameGraphicsAPI(p_createInfo.m_api));
const DeviceCreateInfo deviceCreateInfo {p_createInfo.m_deviceNameHint, m_surface.get()};
m_device = g_graphicsDeviceFactory->Create(p_createInfo.m_api, *m_instance, deviceCreateInfo);
CRITICAL_ASSERT(GraphicsCoreAssertHandler,
m_device != nullptr,
"No graphics device registered for GraphicsAPI '{}'",
EnumNameGraphicsAPI(p_createInfo.m_api));
const SwapchainCreateInfo swapchainCreateInfo {m_device.get(), m_surface.get(), p_createInfo.m_extent};
m_swapchain = g_graphicsSwapchainFactory->Create(p_createInfo.m_api, swapchainCreateInfo);
CRITICAL_ASSERT(GraphicsCoreAssertHandler,
m_swapchain != nullptr,
"No graphics swapchain registered for GraphicsAPI '{}'",
EnumNameGraphicsAPI(p_createInfo.m_api));
}
/****************************************************************************************/
GraphicsInstance& GraphicsContext::GetInstance() const
{
return *m_instance;
}
/****************************************************************************************/
GraphicsSurface& GraphicsContext::GetSurface() const
{
return *m_surface;
}
/****************************************************************************************/
GraphicsDevice& GraphicsContext::GetDevice() const
{
return *m_device;
}
/****************************************************************************************/
GraphicsSwapchain& GraphicsContext::GetSwapchain() const
{
return *m_swapchain;
}
} // namespace Bigfoot
@@ -0,0 +1 @@
#include <GraphicsCore/GraphicsCoreAssertHandler.hpp>
@@ -0,0 +1,128 @@
/*********************************************************************
* \file GraphicsContext.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSCORE_GRAPHICSCONTEXT_HPP
#define BIGFOOT_GRAPHICSCORE_GRAPHICSCONTEXT_HPP
#include <GraphicsInterface/GraphicsDevice.hpp>
#include <GraphicsInterface/GraphicsInstance.hpp>
#include <GraphicsInterface/GraphicsSurface.hpp>
#include <GraphicsInterface/GraphicsSwapchain.hpp>
#include <Utils/Version.hpp>
#include <GraphicsInterface/GraphicsAPI_generated.hpp>
#include <EASTL/string_view.h>
#include <EASTL/unique_ptr.h>
#include <glm/glm.hpp>
namespace Bigfoot
{
struct GraphicsContextCreateInfo
{
/**
* The graphics API to use
*/
GraphicsAPI m_api = GraphicsAPI::Vulkan;
/**
* The name of the application
*/
eastl::string_view m_applicationName;
/**
* The version of the application
*/
Version m_applicationVersion;
/**
* The native window handles
*/
SurfaceCreateInfo m_surfaceCreateInfo;
/**
* Pick a specific physical device by name.
*/
eastl::string_view m_deviceNameHint;
/**
* The desired size of the swapchain images.
*/
glm::uvec2 m_extent = {};
};
class GraphicsContext
{
public:
/**
* Constructor.
*
* \param p_createInfo The create info
*/
explicit GraphicsContext(const GraphicsContextCreateInfo& p_createInfo);
GraphicsContext(const GraphicsContext& p_context) = delete;
GraphicsContext(GraphicsContext&& p_context) = delete;
GraphicsContext& operator=(const GraphicsContext& p_context) = delete;
GraphicsContext& operator=(GraphicsContext&& p_context) = delete;
/**
* Get the graphics instance
*
* \return The graphics instance
*/
[[nodiscard]]
GraphicsInstance& GetInstance() const;
/**
* Get the graphics surface
*
* \return The graphics surface
*/
[[nodiscard]]
GraphicsSurface& GetSurface() const;
/**
* Get the graphics device
*
* \return The graphics device
*/
[[nodiscard]]
GraphicsDevice& GetDevice() const;
/**
* Get the graphics swapchain
*
* \return The graphics swapchain
*/
[[nodiscard]]
GraphicsSwapchain& GetSwapchain() const;
private:
/**
* The graphics instance.
*/
eastl::unique_ptr<GraphicsInstance> m_instance;
/**
* The graphics surface.
*/
eastl::unique_ptr<GraphicsSurface> m_surface;
/**
* The graphics device.
*/
eastl::unique_ptr<GraphicsDevice> m_device;
/**
* The graphics swapchain.
*/
eastl::unique_ptr<GraphicsSwapchain> m_swapchain;
};
} // namespace Bigfoot
#endif
@@ -0,0 +1,20 @@
/*********************************************************************
* \file GraphicsCoreAssertHandler.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSCORE_GRAPHICSCOREASSERTHANDLER_HPP
#define BIGFOOT_GRAPHICSCORE_GRAPHICSCOREASSERTHANDLER_HPP
#include <Utils/Assert/AssertHandler.hpp>
#include <GraphicsCore/GraphicsCoreLogger_generated.hpp>
#ifdef BIGFOOT_NOT_OPTIMIZED
namespace Bigfoot
{
using GraphicsCoreAssertHandler = AssertHandler<GRAPHICSCORE_LOGGER>;
} // namespace Bigfoot
#endif
#endif
@@ -0,0 +1,21 @@
// AUTO-GENERATED DO NOT TOUCH
/*********************************************************************
* \file GraphicsCoreLogger.generated.hpp
*
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSCORELOGGER_GENERATED_HPP
#define BIGFOOT_GRAPHICSCORELOGGER_GENERATED_HPP
#include <Utils/Log/LogMacros.hpp>
#if defined BIGFOOT_NOT_OPTIMIZED
namespace Bigfoot
{
/*
* Logger
*/
inline Log::LoggerInfo GRAPHICSCORE_LOGGER { .m_name = "GRAPHICSCORE_LOGGER", .m_level = LogLevel::Trace};
} // namespace Bigfoot
#endif
#endif
@@ -0,0 +1,18 @@
get_filename_component(PackageName ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${PackageName})
set(PublicDependencies
glm::glm)
set(PrivateDependencies)
set(BigfootPublicDependencies
Utils)
set(BigfootPrivateDependencies)
bigfoot_create_package_lib(
"${PublicDependencies}"
"${PrivateDependencies}"
"${BigfootPublicDependencies}"
"${BigfootPrivateDependencies}"
"Bigfoot/Libs/Graphics")
bigfoot_create_logger()
@@ -0,0 +1 @@
#include <GraphicsInterface/GraphicsInterfaceAssertHandler.hpp>
@@ -0,0 +1,6 @@
namespace Bigfoot;
enum GraphicsAPI: byte
{
Vulkan
}
@@ -0,0 +1,71 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_GRAPHICSAPI_BIGFOOT_H_
#define FLATBUFFERS_GENERATED_GRAPHICSAPI_BIGFOOT_H_
#include "flatbuffers/flatbuffers.h"
// Ensure the included flatbuffers.h is the same version as when this file was
// generated, otherwise it may not be compatible.
static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_MINOR == 12 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
// Ensure the included flatbuffers.h is Bigfoot's fork - stock
// flatbuffers (or a differently versioned Bigfoot fork) is not compatible.
#ifndef FLATBUFFERS_BIGFOOT_VERSION
#error "This file requires Bigfoot's flatbuffers fork - stock flatbuffers is not compatible"
#endif
static_assert(FLATBUFFERS_BIGFOOT_VERSION == 1,
"Non-compatible Bigfoot flatbuffers fork version included");
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Bigfoot {
enum class GraphicsAPI : int8_t {
Vulkan = 0,
MIN = Vulkan,
MAX = Vulkan
};
inline const GraphicsAPI (&EnumValuesGraphicsAPI())[1] {
static const GraphicsAPI values[] = {
GraphicsAPI::Vulkan
};
return values;
}
inline const char * const *EnumNamesGraphicsAPI() {
static const char * const names[2] = {
"Vulkan",
nullptr
};
return names;
}
inline const char *EnumNameGraphicsAPI(GraphicsAPI e) {
if (::flatbuffers::IsOutRange(e, GraphicsAPI::Vulkan, GraphicsAPI::Vulkan)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesGraphicsAPI()[index];
}
inline const ::flatbuffers::TypeTable *GraphicsAPITypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_CHAR, 0, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Bigfoot::GraphicsAPITypeTable
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_ENUM, 1, type_codes, type_refs, nullptr, nullptr, nullptr
};
return &tt;
}
} // namespace Bigfoot
#endif // FLATBUFFERS_GENERATED_GRAPHICSAPI_BIGFOOT_H_
@@ -0,0 +1,75 @@
/*********************************************************************
* \file GraphicsDevice.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSINTERFACE_GRAPHICSDEVICE_HPP
#define BIGFOOT_GRAPHICSINTERFACE_GRAPHICSDEVICE_HPP
#include <GraphicsInterface/GraphicsInstance.hpp>
#include <GraphicsInterface/GraphicsQueue.hpp>
#include <GraphicsInterface/GraphicsSurface.hpp>
#include <Utils/Factory.hpp>
#include <Utils/LazyGlobal.hpp>
#include <GraphicsInterface/GraphicsAPI_generated.hpp>
#include <EASTL/functional.h>
#include <EASTL/string_view.h>
#include <EASTL/unique_ptr.h>
namespace Bigfoot
{
struct DeviceCreateInfo
{
/**
* When empty, the most suitable discrete GPU is preferred.
*/
eastl::string_view m_deviceNameHint;
/**
* The surface the device must be able to present to.
*/
const GraphicsSurface* m_surface = nullptr;
};
class GraphicsDevice
{
public:
virtual ~GraphicsDevice() = default;
/**
* Get a queue of the given type
*
* \param p_type The kind of work the queue should support
* \return The queue, or nullptr if the device has no queue of this type
*/
[[nodiscard]]
virtual const GraphicsQueue* GetQueue(GraphicsQueueType p_type) const = 0;
GraphicsDevice(const GraphicsDevice& p_device) = delete;
GraphicsDevice(GraphicsDevice&& p_device) = delete;
GraphicsDevice& operator=(const GraphicsDevice& p_device) = delete;
GraphicsDevice& operator=(GraphicsDevice&& p_device) = delete;
protected:
GraphicsDevice() = default;
};
/****************************************************************************************/
using GraphicsDeviceFactory =
Factory<GraphicsDevice,
GraphicsAPI,
eastl::function<eastl::unique_ptr<GraphicsDevice>(const GraphicsInstance&, const DeviceCreateInfo&)>>;
/**
* The global factory graphics libraries register themselves into, keyed by GraphicsAPI
*/
inline LazyGlobal<GraphicsDeviceFactory> g_graphicsDeviceFactory;
} // namespace Bigfoot
#endif
@@ -0,0 +1,47 @@
/*********************************************************************
* \file GraphicsImage.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSINTERFACE_GRAPHICSIMAGE_HPP
#define BIGFOOT_GRAPHICSINTERFACE_GRAPHICSIMAGE_HPP
#include <GraphicsInterface/PixelFormat_generated.hpp>
#include <glm/glm.hpp>
namespace Bigfoot
{
class GraphicsImage
{
public:
virtual ~GraphicsImage() = default;
/**
* Get the pixel format of the image
*
* \return The image format
*/
[[nodiscard]]
virtual PixelFormat GetFormat() const = 0;
/**
* Get the size of the image
*
* \return The image extent, in pixels
*/
[[nodiscard]]
virtual glm::uvec2 GetExtent() const = 0;
GraphicsImage(const GraphicsImage& p_image) = delete;
GraphicsImage(GraphicsImage&& p_image) = delete;
GraphicsImage& operator=(const GraphicsImage& p_image) = delete;
GraphicsImage& operator=(GraphicsImage&& p_image) = delete;
protected:
GraphicsImage() = default;
};
} // namespace Bigfoot
#endif
@@ -0,0 +1,48 @@
/*********************************************************************
* \file GraphicsInstance.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSINTERFACE_GRAPHICSINSTANCE_HPP
#define BIGFOOT_GRAPHICSINTERFACE_GRAPHICSINSTANCE_HPP
#include <Utils/Factory.hpp>
#include <Utils/LazyGlobal.hpp>
#include <Utils/Version.hpp>
#include <GraphicsInterface/GraphicsAPI_generated.hpp>
#include <EASTL/functional.h>
#include <EASTL/string_view.h>
#include <EASTL/unique_ptr.h>
namespace Bigfoot
{
class GraphicsInstance
{
public:
virtual ~GraphicsInstance() = default;
GraphicsInstance(const GraphicsInstance& p_instance) = delete;
GraphicsInstance(GraphicsInstance&& p_instance) = delete;
GraphicsInstance& operator=(const GraphicsInstance& p_instance) = delete;
GraphicsInstance& operator=(GraphicsInstance&& p_instance) = delete;
protected:
GraphicsInstance() = default;
};
/****************************************************************************************/
using GraphicsInstanceFactory =
Factory<GraphicsInstance,
GraphicsAPI,
eastl::function<eastl::unique_ptr<GraphicsInstance>(eastl::string_view, Version)>>;
/****************************************************************************************/
inline LazyGlobal<GraphicsInstanceFactory> g_graphicsInstanceFactory;
} // namespace Bigfoot
#endif
@@ -0,0 +1,20 @@
/*********************************************************************
* \file GraphicsInterfaceAssertHandler.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSINTERFACE_GRAPHICSINTERFACEASSERTHANDLER_HPP
#define BIGFOOT_GRAPHICSINTERFACE_GRAPHICSINTERFACEASSERTHANDLER_HPP
#include <Utils/Assert/AssertHandler.hpp>
#include <GraphicsInterface/GraphicsInterfaceLogger_generated.hpp>
#ifdef BIGFOOT_NOT_OPTIMIZED
namespace Bigfoot
{
using GraphicsInterfaceAssertHandler = AssertHandler<GRAPHICSINTERFACE_LOGGER>;
} // namespace Bigfoot
#endif
#endif
@@ -0,0 +1,21 @@
// AUTO-GENERATED DO NOT TOUCH
/*********************************************************************
* \file GraphicsInterfaceLogger.generated.hpp
*
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSINTERFACELOGGER_GENERATED_HPP
#define BIGFOOT_GRAPHICSINTERFACELOGGER_GENERATED_HPP
#include <Utils/Log/LogMacros.hpp>
#if defined BIGFOOT_NOT_OPTIMIZED
namespace Bigfoot
{
/*
* Logger
*/
inline Log::LoggerInfo GRAPHICSINTERFACE_LOGGER { .m_name = "GRAPHICSINTERFACE_LOGGER", .m_level = LogLevel::Trace};
} // namespace Bigfoot
#endif
#endif
@@ -0,0 +1,37 @@
/*********************************************************************
* \file GraphicsQueue.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSINTERFACE_GRAPHICSQUEUE_HPP
#define BIGFOOT_GRAPHICSINTERFACE_GRAPHICSQUEUE_HPP
#include <GraphicsInterface/GraphicsQueueType_generated.hpp>
namespace Bigfoot
{
class GraphicsQueue
{
public:
virtual ~GraphicsQueue() = default;
/**
* Get the kind of work this queue can be submitted
*
* \return The queue type
*/
[[nodiscard]]
virtual GraphicsQueueType GetType() const = 0;
GraphicsQueue(const GraphicsQueue& p_queue) = delete;
GraphicsQueue(GraphicsQueue&& p_queue) = delete;
GraphicsQueue& operator=(const GraphicsQueue& p_queue) = delete;
GraphicsQueue& operator=(GraphicsQueue&& p_queue) = delete;
protected:
GraphicsQueue() = default;
};
} // namespace Bigfoot
#endif
@@ -0,0 +1,9 @@
namespace Bigfoot;
enum GraphicsQueueType: byte
{
Graphics,
Compute,
Transfer,
Present
}
@@ -0,0 +1,83 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_GRAPHICSQUEUETYPE_BIGFOOT_H_
#define FLATBUFFERS_GENERATED_GRAPHICSQUEUETYPE_BIGFOOT_H_
#include "flatbuffers/flatbuffers.h"
// Ensure the included flatbuffers.h is the same version as when this file was
// generated, otherwise it may not be compatible.
static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_MINOR == 12 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
// Ensure the included flatbuffers.h is Bigfoot's fork - stock
// flatbuffers (or a differently versioned Bigfoot fork) is not compatible.
#ifndef FLATBUFFERS_BIGFOOT_VERSION
#error "This file requires Bigfoot's flatbuffers fork - stock flatbuffers is not compatible"
#endif
static_assert(FLATBUFFERS_BIGFOOT_VERSION == 1,
"Non-compatible Bigfoot flatbuffers fork version included");
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Bigfoot {
enum class GraphicsQueueType : int8_t {
Graphics = 0,
Compute = 1,
Transfer = 2,
Present = 3,
MIN = Graphics,
MAX = Present
};
inline const GraphicsQueueType (&EnumValuesGraphicsQueueType())[4] {
static const GraphicsQueueType values[] = {
GraphicsQueueType::Graphics,
GraphicsQueueType::Compute,
GraphicsQueueType::Transfer,
GraphicsQueueType::Present
};
return values;
}
inline const char * const *EnumNamesGraphicsQueueType() {
static const char * const names[5] = {
"Graphics",
"Compute",
"Transfer",
"Present",
nullptr
};
return names;
}
inline const char *EnumNameGraphicsQueueType(GraphicsQueueType e) {
if (::flatbuffers::IsOutRange(e, GraphicsQueueType::Graphics, GraphicsQueueType::Present)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesGraphicsQueueType()[index];
}
inline const ::flatbuffers::TypeTable *GraphicsQueueTypeTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_CHAR, 0, 0 },
{ ::flatbuffers::ET_CHAR, 0, 0 },
{ ::flatbuffers::ET_CHAR, 0, 0 },
{ ::flatbuffers::ET_CHAR, 0, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Bigfoot::GraphicsQueueTypeTypeTable
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_ENUM, 4, type_codes, type_refs, nullptr, nullptr, nullptr
};
return &tt;
}
} // namespace Bigfoot
#endif // FLATBUFFERS_GENERATED_GRAPHICSQUEUETYPE_BIGFOOT_H_
@@ -0,0 +1,70 @@
/*********************************************************************
* \file GraphicsSurface.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSINTERFACE_GRAPHICSSURFACE_HPP
#define BIGFOOT_GRAPHICSINTERFACE_GRAPHICSSURFACE_HPP
#include <GraphicsInterface/GraphicsInstance.hpp>
#include <Utils/Factory.hpp>
#include <Utils/LazyGlobal.hpp>
#include <Utils/TargetMacros.h>
#include <GraphicsInterface/GraphicsAPI_generated.hpp>
#include <EASTL/functional.h>
#include <EASTL/unique_ptr.h>
#ifdef BIGFOOT_WINDOWS
#include <Windows.h>
#elif defined BIGFOOT_LINUX
struct wl_display;
struct wl_surface;
#endif
namespace Bigfoot
{
/**
* The native window handles needed to create a GraphicsSurface
*/
struct SurfaceCreateInfo
{
#ifdef BIGFOOT_WINDOWS
HWND m_windowHandle = nullptr;
HINSTANCE m_windowInstance = nullptr;
#elif defined BIGFOOT_LINUX
wl_display* m_display = nullptr;
wl_surface* m_surface = nullptr;
#endif
};
class GraphicsSurface
{
public:
virtual ~GraphicsSurface() = default;
GraphicsSurface(const GraphicsSurface& p_surface) = delete;
GraphicsSurface(GraphicsSurface&& p_surface) = delete;
GraphicsSurface& operator=(const GraphicsSurface& p_surface) = delete;
GraphicsSurface& operator=(GraphicsSurface&& p_surface) = delete;
protected:
GraphicsSurface() = default;
};
/****************************************************************************************/
using GraphicsSurfaceFactory =
Factory<GraphicsSurface,
GraphicsAPI,
eastl::function<eastl::unique_ptr<GraphicsSurface>(const GraphicsInstance&, const SurfaceCreateInfo&)>>;
/****************************************************************************************/
inline LazyGlobal<GraphicsSurfaceFactory> g_graphicsSurfaceFactory;
} // namespace Bigfoot
#endif
@@ -0,0 +1,89 @@
/*********************************************************************
* \file GraphicsSwapchain.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSINTERFACE_GRAPHICSSWAPCHAIN_HPP
#define BIGFOOT_GRAPHICSINTERFACE_GRAPHICSSWAPCHAIN_HPP
#include <GraphicsInterface/GraphicsDevice.hpp>
#include <GraphicsInterface/GraphicsImage.hpp>
#include <GraphicsInterface/GraphicsInstance.hpp>
#include <GraphicsInterface/GraphicsSurface.hpp>
#include <Utils/Factory.hpp>
#include <Utils/LazyGlobal.hpp>
#include <GraphicsInterface/GraphicsAPI_generated.hpp>
#include <EASTL/functional.h>
#include <EASTL/unique_ptr.h>
#include <glm/glm.hpp>
#include <cstdint>
namespace Bigfoot
{
struct SwapchainCreateInfo
{
/**
* The device to create the swapchain from. Must be able to present to m_surface.
*/
const GraphicsDevice* m_device = nullptr;
/**
* The surface the swapchain will present to.
*/
const GraphicsSurface* m_surface = nullptr;
/**
* The desired size of the swapchain images.
*/
glm::uvec2 m_extent = {};
};
class GraphicsSwapchain
{
public:
virtual ~GraphicsSwapchain() = default;
/**
* Get the number of images owned by the swapchain
*
* \return The image count
*/
[[nodiscard]]
virtual std::uint32_t GetImageCount() const = 0;
/**
* Get one of the images owned by the swapchain
*
* \param p_index The index of the image to get.
* \return The image
*/
[[nodiscard]]
virtual const GraphicsImage& GetImage(std::uint32_t p_index) const = 0;
GraphicsSwapchain(const GraphicsSwapchain& p_swapchain) = delete;
GraphicsSwapchain(GraphicsSwapchain&& p_swapchain) = delete;
GraphicsSwapchain& operator=(const GraphicsSwapchain& p_swapchain) = delete;
GraphicsSwapchain& operator=(GraphicsSwapchain&& p_swapchain) = delete;
protected:
GraphicsSwapchain() = default;
};
/****************************************************************************************/
using GraphicsSwapchainFactory =
Factory<GraphicsSwapchain,
GraphicsAPI,
eastl::function<eastl::unique_ptr<GraphicsSwapchain>(const SwapchainCreateInfo&)>>;
/****************************************************************************************/
inline LazyGlobal<GraphicsSwapchainFactory> g_graphicsSwapchainFactory;
} // namespace Bigfoot
#endif
@@ -0,0 +1,12 @@
namespace Bigfoot;
enum PixelFormat: byte
{
Undefined,
R8G8B8A8Unorm,
R8G8B8A8Srgb,
B8G8R8A8Unorm,
B8G8R8A8Srgb,
A2B10G10R10UnormPack32,
R16G16B16A16Sfloat
}
@@ -0,0 +1,95 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_PIXELFORMAT_BIGFOOT_H_
#define FLATBUFFERS_GENERATED_PIXELFORMAT_BIGFOOT_H_
#include "flatbuffers/flatbuffers.h"
// Ensure the included flatbuffers.h is the same version as when this file was
// generated, otherwise it may not be compatible.
static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_MINOR == 12 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
// Ensure the included flatbuffers.h is Bigfoot's fork - stock
// flatbuffers (or a differently versioned Bigfoot fork) is not compatible.
#ifndef FLATBUFFERS_BIGFOOT_VERSION
#error "This file requires Bigfoot's flatbuffers fork - stock flatbuffers is not compatible"
#endif
static_assert(FLATBUFFERS_BIGFOOT_VERSION == 1,
"Non-compatible Bigfoot flatbuffers fork version included");
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Bigfoot {
enum class PixelFormat : int8_t {
Undefined = 0,
R8G8B8A8Unorm = 1,
R8G8B8A8Srgb = 2,
B8G8R8A8Unorm = 3,
B8G8R8A8Srgb = 4,
A2B10G10R10UnormPack32 = 5,
R16G16B16A16Sfloat = 6,
MIN = Undefined,
MAX = R16G16B16A16Sfloat
};
inline const PixelFormat (&EnumValuesPixelFormat())[7] {
static const PixelFormat values[] = {
PixelFormat::Undefined,
PixelFormat::R8G8B8A8Unorm,
PixelFormat::R8G8B8A8Srgb,
PixelFormat::B8G8R8A8Unorm,
PixelFormat::B8G8R8A8Srgb,
PixelFormat::A2B10G10R10UnormPack32,
PixelFormat::R16G16B16A16Sfloat
};
return values;
}
inline const char * const *EnumNamesPixelFormat() {
static const char * const names[8] = {
"Undefined",
"R8G8B8A8Unorm",
"R8G8B8A8Srgb",
"B8G8R8A8Unorm",
"B8G8R8A8Srgb",
"A2B10G10R10UnormPack32",
"R16G16B16A16Sfloat",
nullptr
};
return names;
}
inline const char *EnumNamePixelFormat(PixelFormat e) {
if (::flatbuffers::IsOutRange(e, PixelFormat::Undefined, PixelFormat::R16G16B16A16Sfloat)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesPixelFormat()[index];
}
inline const ::flatbuffers::TypeTable *PixelFormatTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_CHAR, 0, 0 },
{ ::flatbuffers::ET_CHAR, 0, 0 },
{ ::flatbuffers::ET_CHAR, 0, 0 },
{ ::flatbuffers::ET_CHAR, 0, 0 },
{ ::flatbuffers::ET_CHAR, 0, 0 },
{ ::flatbuffers::ET_CHAR, 0, 0 },
{ ::flatbuffers::ET_CHAR, 0, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Bigfoot::PixelFormatTypeTable
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_ENUM, 7, type_codes, type_refs, nullptr, nullptr, nullptr
};
return &tt;
}
} // namespace Bigfoot
#endif // FLATBUFFERS_GENERATED_PIXELFORMAT_BIGFOOT_H_
@@ -0,0 +1,27 @@
get_filename_component(PackageName ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${PackageName})
set(PublicDependencies
vulkan-headers::vulkan-headers
GPUOpen::VulkanMemoryAllocator)
set(PrivateDependencies)
set(BigfootPublicDependencies
GraphicsInterface)
set(BigfootPrivateDependencies
Engine)
bigfoot_create_package_lib(
"${PublicDependencies}"
"${PrivateDependencies}"
"${BigfootPublicDependencies}"
"${BigfootPrivateDependencies}"
"Bigfoot/Libs/Graphics")
bigfoot_create_logger()
target_compile_definitions(${PackageName}
PRIVATE VULKAN_HPP_NO_EXCEPTIONS
PRIVATE VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1
PRIVATE $<$<PLATFORM_ID:Windows>:VK_USE_PLATFORM_WIN32_KHR>
PRIVATE $<$<PLATFORM_ID:Linux>:VK_USE_PLATFORM_WAYLAND_KHR>
PUBLIC BIGFOOT_VULKAN)
@@ -0,0 +1 @@
#include <GraphicsVulkan/GraphicsVulkanAssertHandler.hpp>
@@ -0,0 +1,20 @@
/*********************************************************************
* \file GraphicsVulkanAssertHandler.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_GRAPHICSVULKANASSERTHANDLER_HPP
#define BIGFOOT_GRAPHICSVULKAN_GRAPHICSVULKANASSERTHANDLER_HPP
#include <Utils/Assert/AssertHandler.hpp>
#include <GraphicsVulkan/GraphicsVulkanLogger_generated.hpp>
#ifdef BIGFOOT_NOT_OPTIMIZED
namespace Bigfoot
{
using GraphicsVulkanAssertHandler = AssertHandler<GRAPHICSVULKAN_LOGGER>;
} // namespace Bigfoot
#endif
#endif
@@ -0,0 +1,21 @@
// AUTO-GENERATED DO NOT TOUCH
/*********************************************************************
* \file GraphicsVulkanLogger.generated.hpp
*
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKANLOGGER_GENERATED_HPP
#define BIGFOOT_GRAPHICSVULKANLOGGER_GENERATED_HPP
#include <Utils/Log/LogMacros.hpp>
#if defined BIGFOOT_NOT_OPTIMIZED
namespace Bigfoot
{
/*
* Logger
*/
inline Log::LoggerInfo GRAPHICSVULKAN_LOGGER { .m_name = "GRAPHICSVULKAN_LOGGER", .m_level = LogLevel::Trace};
} // namespace Bigfoot
#endif
#endif
@@ -0,0 +1,80 @@
/*********************************************************************
* \file VulkanDevice.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANDEVICE_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANDEVICE_HPP
#include <GraphicsVulkan/VulkanInclude.hpp>
#include <GraphicsVulkan/VulkanInstance.hpp>
#include <GraphicsVulkan/VulkanQueue.hpp>
#include <GraphicsVulkan/VulkanSurface.hpp>
#include <GraphicsInterface/GraphicsDevice.hpp>
#include <EASTL/array.h>
#include <EASTL/optional.h>
#include <EASTL/string_view.h>
namespace Bigfoot::Vulkan
{
class VulkanDevice final: public GraphicsDevice
{
public:
/**
* Constructor.
*
* \param p_instance The instance to create the device from
* \param p_surface The surface the device must be able to present to. Can be null to create a device with no
* present queue
* \param p_deviceNameHint Pick a specific physical device by name.
*/
VulkanDevice(const VulkanInstance& p_instance, const VulkanSurface* p_surface, eastl::string_view p_deviceNameHint);
~VulkanDevice() override;
/**
* Get a queue of the given type
*
* \param p_type The kind of work the queue should support
* \return The queue, or nullptr if the device has no queue of this type
*/
[[nodiscard]]
const GraphicsQueue* GetQueue(GraphicsQueueType p_type) const override;
/**
* Get the underlying Vulkan physical device handle
*
* \return The vk::PhysicalDevice handle
*/
[[nodiscard]]
vk::PhysicalDevice GetPhysicalDeviceHandle() const;
/**
* Get the underlying Vulkan device handle
*
* \return The vk::Device handle
*/
[[nodiscard]]
vk::Device GetHandle() const;
private:
/**
* The physical device this device was created from
*/
vk::PhysicalDevice m_physicalDevice;
/**
* The logical device
*/
vk::Device m_device;
/**
* The queues. A slot is empty if the device has no queue of that type
*/
eastl::array<eastl::optional<VulkanQueue>, static_cast<size_t>(GraphicsQueueType::MAX) + 1> m_queues;
};
} // namespace Bigfoot::Vulkan
#endif
@@ -0,0 +1,51 @@
/*********************************************************************
* \file VulkanFormatters.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANFORMATTERS_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANFORMATTERS_HPP
#include <GraphicsVulkan/VulkanInclude.hpp>
#include <Utils/TargetMacros.h>
#include <fmt/format.h>
template<>
struct fmt::formatter<vk::Result>
{
static constexpr auto parse(format_parse_context& ctx)
{
return ctx.begin();
}
static auto format(const vk::Result p_result, format_context& ctx)
{
return fmt::format_to(ctx.out(), "{}", vk::to_string(p_result));
}
};
#ifdef BIGFOOT_NOT_OPTIMIZED
#include <quill/DeferredFormatCodec.h>
template<>
struct fmtquill::formatter<vk::Result>
{
static constexpr auto parse(format_parse_context& ctx)
{
return ctx.begin();
}
static auto format(const vk::Result p_result, format_context& ctx)
{
return fmtquill::format_to(ctx.out(), "{}", vk::to_string(p_result));
}
};
template<>
struct quill::Codec<vk::Result>: quill::DeferredFormatCodec<vk::Result>
{
};
#endif
#endif
@@ -0,0 +1,75 @@
/*********************************************************************
* \file VulkanImage.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANIMAGE_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANIMAGE_HPP
#include <GraphicsVulkan/VulkanInclude.hpp>
#include <GraphicsInterface/GraphicsImage.hpp>
namespace Bigfoot::Vulkan
{
class VulkanImage final: public GraphicsImage
{
public:
/**
* Constructor
*
* \param p_image The underlying Vulkan image handle
* \param p_format The pixel format of the image
* \param p_extent The size of the image
*/
VulkanImage(vk::Image p_image, PixelFormat p_format, vk::Extent2D p_extent);
VulkanImage(const VulkanImage& p_image) = delete;
VulkanImage(VulkanImage&& p_image) noexcept;
VulkanImage& operator=(const VulkanImage& p_image) = delete;
VulkanImage& operator=(VulkanImage&& p_image) noexcept;
/**
* Get the pixel format of the image
*
* \return The image format
*/
[[nodiscard]]
PixelFormat GetFormat() const override;
/**
* Get the size of the image
*
* \return The image extent, in pixels
*/
[[nodiscard]]
glm::uvec2 GetExtent() const override;
/**
* Get the underlying Vulkan image handle
*
* \return The vk::Image handle
*/
[[nodiscard]]
vk::Image GetHandle() const;
private:
/**
* The vulkan image
*/
vk::Image m_image;
/**
* The pixel format of the image
*/
PixelFormat m_format;
/**
* The size of the image
*/
vk::Extent2D m_extent;
};
} // namespace Bigfoot::Vulkan
#endif
@@ -0,0 +1,13 @@
/*********************************************************************
* \file VulkanInclude.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANINCLUDE_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANINCLUDE_HPP
#define VULKAN_HPP_ASSERT(result)
#define VULKAN_HPP_ASSERT_ON_RESULT(result)
#include <vulkan/vulkan.hpp>
#endif
@@ -0,0 +1,59 @@
/*********************************************************************
* \file VulkanInstance.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANINSTANCE_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANINSTANCE_HPP
#include <GraphicsVulkan/VulkanInclude.hpp>
#include <GraphicsInterface/GraphicsInstance.hpp>
#include <Utils/TargetMacros.h>
#include <Utils/Version.hpp>
#include <EASTL/string_view.h>
namespace Bigfoot::Vulkan
{
class VulkanInstance final: public GraphicsInstance
{
public:
/**
* Constructor. Creates a vk::Instance
*
* \param p_applicationName The name of the application
* \param p_applicationVersion The version of the application
*/
VulkanInstance(eastl::string_view p_applicationName, Version p_applicationVersion);
~VulkanInstance() override;
/**
* Get the underlying Vulkan instance handle
*
* \return The vk::Instance handle
*/
[[nodiscard]]
vk::Instance GetHandle() const;
private:
/**
* The vulkan loader.
*/
vk::detail::DynamicLoader m_loader;
/**
* The vulkan instance.
*/
vk::Instance m_instance;
/**
* The debug messenger (used for validation callbacks).
*/
BIGFOOT_NOT_OPTIMIZED_ONLY(vk::DebugUtilsMessengerEXT m_debugMessenger;)
};
} // namespace Bigfoot::Vulkan
#endif
@@ -0,0 +1,34 @@
/*********************************************************************
* \file VulkanPixelFormat.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANPIXELFORMAT_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANPIXELFORMAT_HPP
#include <GraphicsVulkan/VulkanInclude.hpp>
#include <GraphicsInterface/PixelFormat_generated.hpp>
namespace Bigfoot::Vulkan
{
/**
* Convert PixelFormat to its vk::Format equivalent
*
* \param p_format The format to convert
* \return The equivalent vk::Format
*/
[[nodiscard]]
vk::Format ToVulkanFormat(PixelFormat p_format);
/**
* Convert a vk::Format to its PixelFormat equivalent
*
* \param p_format The format to convert
* \return The equivalent PixelFormat
*/
[[nodiscard]]
PixelFormat FromVulkanFormat(vk::Format p_format);
} // namespace Bigfoot::Vulkan
#endif
@@ -0,0 +1,77 @@
/*********************************************************************
* \file VulkanQueue.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANQUEUE_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANQUEUE_HPP
#include <GraphicsVulkan/VulkanInclude.hpp>
#include <GraphicsInterface/GraphicsQueue.hpp>
#include <cstdint>
namespace Bigfoot::Vulkan
{
class VulkanQueue final: public GraphicsQueue
{
public:
/**
* Constructor
*
* \param p_queue The underlying Vulkan queue handle
* \param p_familyIndex The queue family index this queue was retrieved from
* \param p_type The kind of work this queue can submit
*/
VulkanQueue(vk::Queue p_queue, std::uint32_t p_familyIndex, GraphicsQueueType p_type);
VulkanQueue(const VulkanQueue& p_queue) = delete;
VulkanQueue(VulkanQueue&& p_queue) noexcept;
VulkanQueue& operator=(const VulkanQueue& p_queue) = delete;
VulkanQueue& operator=(VulkanQueue&& p_queue) noexcept;
/**
* Get the kind of work this queue can be submitted
*
* \return The queue type
*/
[[nodiscard]]
GraphicsQueueType GetType() const override;
/**
* Get the underlying Vulkan queue handle
*
* \return The vk::Queue handle
*/
[[nodiscard]]
vk::Queue GetHandle() const;
/**
* Get the index of the queue family this queue was retrieved from
*
* \return The queue family index
*/
[[nodiscard]]
std::uint32_t GetFamilyIndex() const;
private:
/**
* The vulkn queue
*/
vk::Queue m_queue;
/**
* The index of the queue family this queue was retrieved from
*/
std::uint32_t m_familyIndex;
/**
* The kind of work this queue can submit
*/
GraphicsQueueType m_type;
};
} // namespace Bigfoot::Vulkan
#endif
@@ -0,0 +1,51 @@
/*********************************************************************
* \file VulkanSurface.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANSURFACE_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANSURFACE_HPP
#include <GraphicsVulkan/VulkanInclude.hpp>
#include <GraphicsVulkan/VulkanInstance.hpp>
#include <GraphicsInterface/GraphicsSurface.hpp>
namespace Bigfoot::Vulkan
{
class VulkanSurface final: public GraphicsSurface
{
public:
/**
* Constructor.
* Creates a vk::SurfaceKHR for the given native window.
*
* \param p_instance The instance to create the surface from
* \param p_surfaceCreateInfo The native window handles to create the surface for
*/
VulkanSurface(const VulkanInstance& p_instance, const SurfaceCreateInfo& p_surfaceCreateInfo);
~VulkanSurface() override;
/**
* Get the underlying Vulkan surface handle
*
* \return The vk::SurfaceKHR handle
*/
[[nodiscard]]
vk::SurfaceKHR GetHandle() const;
private:
/**
* The instance
*/
const VulkanInstance& m_instance;
/**
* The surface
*/
vk::SurfaceKHR m_surface;
};
} // namespace Bigfoot::Vulkan
#endif
@@ -0,0 +1,88 @@
/*********************************************************************
* \file VulkanSwapchain.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANSWAPCHAIN_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANSWAPCHAIN_HPP
#include <GraphicsVulkan/VulkanDevice.hpp>
#include <GraphicsVulkan/VulkanImage.hpp>
#include <GraphicsVulkan/VulkanInclude.hpp>
#include <GraphicsVulkan/VulkanSurface.hpp>
#include <GraphicsInterface/GraphicsSwapchain.hpp>
#include <EASTL/span.h>
#include <EASTL/vector.h>
#include <cstdint>
namespace Bigfoot::Vulkan
{
class VulkanSwapchain final: public GraphicsSwapchain
{
public:
/**
* Constructor.
*
* \param p_device The device to create the swapchain from.
* \param p_surface The surface the swapchain will present to.
* \param p_extent The desired size of the swapchain images.
*/
VulkanSwapchain(const VulkanDevice& p_device, const VulkanSurface& p_surface, glm::uvec2 p_extent);
~VulkanSwapchain() override;
/**
* Get the number of images owned by the swapchain
*
* \return The image count
*/
[[nodiscard]]
std::uint32_t GetImageCount() const override;
/**
* Get one of the images owned by the swapchain
*
* \param p_index The index of the image to get. Must be less than GetImageCount()
* \return The image
*/
[[nodiscard]]
const GraphicsImage& GetImage(std::uint32_t p_index) const override;
/**
* Get the underlying Vulkan swapchain handle
*
* \return The vk::SwapchainKHR handle
*/
[[nodiscard]]
vk::SwapchainKHR GetHandle() const;
/**
* Get the swapchain images
*
* \return The images owned by the swapchain
*/
[[nodiscard]]
eastl::span<const VulkanImage> GetImages() const;
private:
/**
* The device the swapchain was created from
*/
const VulkanDevice& m_device;
/**
* The swapchain
*/
vk::SwapchainKHR m_swapchain;
/**
* The images owned by the swapchain
*/
eastl::vector<VulkanImage> m_images;
};
} // namespace Bigfoot::Vulkan
#endif
@@ -0,0 +1,352 @@
/*********************************************************************
* \file VulkanDevice.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <GraphicsVulkan/VulkanDevice.hpp>
#include <GraphicsVulkan/GraphicsVulkanAssertHandler.hpp>
#include <GraphicsVulkan/VulkanFormatters.hpp>
#include <Utils/String.hpp>
#include <Utils/TargetMacros.h>
#include <EASTL/algorithm.h>
#include <EASTL/optional.h>
#include <EASTL/span.h>
#include <EASTL/vector.h>
#include <bit>
#include <cstdint>
#include <span>
#include <vector>
namespace Bigfoot::Vulkan
{
[[nodiscard]]
std::uint32_t GetPhysicalDeviceTypeRank(const vk::PhysicalDeviceType p_type)
{
switch (p_type)
{
case vk::PhysicalDeviceType::eDiscreteGpu:
return 0;
case vk::PhysicalDeviceType::eIntegratedGpu:
return 1;
case vk::PhysicalDeviceType::eVirtualGpu:
return 2;
case vk::PhysicalDeviceType::eCpu:
return 3;
case vk::PhysicalDeviceType::eOther:
default:
return 4;
}
}
/****************************************************************************************/
struct SelectedQueueFamilies
{
eastl::optional<std::uint32_t> m_graphics;
eastl::optional<std::uint32_t> m_compute;
eastl::optional<std::uint32_t> m_transfer;
eastl::optional<std::uint32_t> m_present;
};
/****************************************************************************************/
[[nodiscard]]
eastl::optional<std::uint32_t> FindQueueFamily(const std::span<const vk::QueueFamilyProperties> p_families,
const vk::QueueFlagBits p_required)
{
eastl::optional<std::uint32_t> best;
int bestBitCount = 0;
for (std::uint32_t index = 0; index < p_families.size(); ++index)
{
const vk::QueueFlags flags = p_families[index].queueFlags;
if (!(flags & p_required))
{
continue;
}
const int bitCount = std::popcount(static_cast<vk::QueueFlags::MaskType>(flags));
if (!best.has_value() || bitCount < bestBitCount)
{
best = index;
bestBitCount = bitCount;
}
}
return best;
}
/****************************************************************************************/
[[nodiscard]]
eastl::optional<std::uint32_t> FindPresentQueueFamily(const vk::PhysicalDevice p_physicalDevice,
const vk::SurfaceKHR p_surface,
const std::uint32_t p_familyCount,
const eastl::optional<std::uint32_t> p_graphicsFamily)
{
if (p_graphicsFamily.has_value())
{
const vk::ResultValue<vk::Bool32> support = p_physicalDevice.getSurfaceSupportKHR(*p_graphicsFamily, p_surface);
if (support.result == vk::Result::eSuccess && support.value)
{
return *p_graphicsFamily;
}
}
for (std::uint32_t index = 0; index < p_familyCount; ++index)
{
const vk::ResultValue<vk::Bool32> support = p_physicalDevice.getSurfaceSupportKHR(index, p_surface);
if (support.result == vk::Result::eSuccess && support.value)
{
return index;
}
}
return eastl::nullopt;
}
/****************************************************************************************/
[[nodiscard]]
SelectedQueueFamilies SelectQueueFamilies(const vk::PhysicalDevice p_physicalDevice, const vk::SurfaceKHR p_surface)
{
const std::vector<vk::QueueFamilyProperties> families = p_physicalDevice.getQueueFamilyProperties();
SelectedQueueFamilies selected;
selected.m_graphics = FindQueueFamily(families, vk::QueueFlagBits::eGraphics);
selected.m_compute = FindQueueFamily(families, vk::QueueFlagBits::eCompute);
selected.m_transfer = FindQueueFamily(families, vk::QueueFlagBits::eTransfer);
if (!selected.m_transfer.has_value())
{
// Per the Vulkan spec, any queue family supporting Graphics or Compute implicitly supports
// Transfer even when it doesn't explicitly report the bit, so the graphics family always works.
selected.m_transfer = selected.m_graphics;
}
if (p_surface)
{
selected.m_present = FindPresentQueueFamily(p_physicalDevice,
p_surface,
static_cast<std::uint32_t>(families.size()),
selected.m_graphics);
}
return selected;
}
/****************************************************************************************/
[[nodiscard]]
bool IsPhysicalDeviceSuitable(const SelectedQueueFamilies& p_families, const bool p_needsPresent)
{
return p_families.m_graphics.has_value() && p_families.m_compute.has_value() &&
(!p_needsPresent || p_families.m_present.has_value());
}
/****************************************************************************************/
struct PhysicalDeviceCandidate
{
vk::PhysicalDevice m_handle;
vk::PhysicalDeviceProperties m_properties;
SelectedQueueFamilies m_queueFamilies;
};
/****************************************************************************************/
[[nodiscard]]
const PhysicalDeviceCandidate& SelectPhysicalDevice(const eastl::span<const PhysicalDeviceCandidate> p_candidates,
const eastl::string_view p_deviceNameHint)
{
if (!p_deviceNameHint.empty())
{
const auto it = eastl::find_if(p_candidates.begin(),
p_candidates.end(),
[p_deviceNameHint](const PhysicalDeviceCandidate& p_candidate)
{
return EqualNoCase(p_candidate.m_properties.deviceName.data(),
p_deviceNameHint);
});
if (it != p_candidates.end())
{
return *it;
}
BIGFOOT_LOG_WARN(GRAPHICSVULKAN_LOGGER,
"No Vulkan device matching hint '{}' found, falling back to automatic selection",
p_deviceNameHint);
}
return *eastl::min_element(p_candidates.begin(),
p_candidates.end(),
[](const PhysicalDeviceCandidate& p_lhs, const PhysicalDeviceCandidate& p_rhs)
{
return GetPhysicalDeviceTypeRank(p_lhs.m_properties.deviceType) <
GetPhysicalDeviceTypeRank(p_rhs.m_properties.deviceType);
});
}
/****************************************************************************************/
[[nodiscard]]
eastl::optional<VulkanQueue> CreateQueue(const vk::Device p_device,
const eastl::optional<std::uint32_t> p_familyIndex,
const GraphicsQueueType p_type)
{
if (!p_familyIndex.has_value())
{
return eastl::nullopt;
}
return VulkanQueue {p_device.getQueue(*p_familyIndex, 0), *p_familyIndex, p_type};
}
/****************************************************************************************/
VulkanDevice::VulkanDevice(const VulkanInstance& p_instance,
const VulkanSurface* p_surface,
const eastl::string_view p_deviceNameHint)
{
const vk::SurfaceKHR surfaceHandle = p_surface != nullptr ? p_surface->GetHandle() : vk::SurfaceKHR {};
const vk::ResultValue<std::vector<vk::PhysicalDevice>> physicalDevices = p_instance.GetHandle()
.enumeratePhysicalDevices();
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
physicalDevices.result == vk::Result::eSuccess,
"({}) Failed to enumerate Vulkan physical devices",
physicalDevices.result);
eastl::vector<PhysicalDeviceCandidate> candidates;
for (const vk::PhysicalDevice physicalDevice: physicalDevices.value)
{
SelectedQueueFamilies queueFamilies = SelectQueueFamilies(physicalDevice, surfaceHandle);
if (!IsPhysicalDeviceSuitable(queueFamilies, static_cast<bool>(surfaceHandle)))
{
continue;
}
candidates.push_back({physicalDevice, physicalDevice.getProperties(), eastl::move(queueFamilies)});
}
CRITICAL_ASSERT(GraphicsVulkanAssertHandler, !candidates.empty(), "No suitable Vulkan physical device found");
const PhysicalDeviceCandidate& selected = SelectPhysicalDevice(candidates, p_deviceNameHint);
m_physicalDevice = selected.m_handle;
BIGFOOT_LOG_INFO(GRAPHICSVULKAN_LOGGER,
"Selected Vulkan physical device '{}' ({})",
selected.m_properties.deviceName.data(),
vk::to_string(selected.m_properties.deviceType));
eastl::vector<std::uint32_t> uniqueFamilies;
for (const eastl::optional<std::uint32_t> family: {selected.m_queueFamilies.m_graphics,
selected.m_queueFamilies.m_compute,
selected.m_queueFamilies.m_transfer,
selected.m_queueFamilies.m_present})
{
if (family.has_value() &&
eastl::find(uniqueFamilies.begin(), uniqueFamilies.end(), *family) == uniqueFamilies.end())
{
uniqueFamilies.push_back(*family);
}
}
constexpr float queuePriority = 1.0f;
eastl::vector<vk::DeviceQueueCreateInfo> queueCreateInfos;
queueCreateInfos.reserve(uniqueFamilies.size());
for (const std::uint32_t family: uniqueFamilies)
{
queueCreateInfos.push_back({{}, family, 1u, &queuePriority});
}
eastl::vector<const char*> enabledExtensions;
if (surfaceHandle)
{
enabledExtensions.push_back(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
}
const vk::DeviceCreateInfo deviceCreateInfo {{}, queueCreateInfos, {}, enabledExtensions};
vk::ResultValue<vk::Device> device {vk::Result::eSuccess, vk::Device {}};
{
BIGFOOT_LSAN_ONLY(const __lsan::ScopedDisabler lsanDisabler;)
device = m_physicalDevice.createDevice(deviceCreateInfo);
}
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
device.result == vk::Result::eSuccess,
"({}) Failed to create Vulkan device",
device.result);
m_device = device.value;
m_queues[static_cast<size_t>(GraphicsQueueType::Graphics)] = CreateQueue(m_device,
selected.m_queueFamilies.m_graphics,
GraphicsQueueType::Graphics);
m_queues[static_cast<size_t>(GraphicsQueueType::Compute)] = CreateQueue(m_device,
selected.m_queueFamilies.m_compute,
GraphicsQueueType::Compute);
m_queues[static_cast<size_t>(GraphicsQueueType::Transfer)] = CreateQueue(m_device,
selected.m_queueFamilies.m_transfer,
GraphicsQueueType::Transfer);
m_queues[static_cast<size_t>(GraphicsQueueType::Present)] = CreateQueue(m_device,
selected.m_queueFamilies.m_present,
GraphicsQueueType::Present);
}
/****************************************************************************************/
VulkanDevice::~VulkanDevice()
{
m_device.destroy();
}
/****************************************************************************************/
const GraphicsQueue* VulkanDevice::GetQueue(const GraphicsQueueType p_type) const
{
const eastl::optional<VulkanQueue>& queue = m_queues[static_cast<size_t>(p_type)];
return queue.has_value() ? &*queue : nullptr;
}
/****************************************************************************************/
vk::PhysicalDevice VulkanDevice::GetPhysicalDeviceHandle() const
{
return m_physicalDevice;
}
/****************************************************************************************/
vk::Device VulkanDevice::GetHandle() const
{
return m_device;
}
/****************************************************************************************/
[[nodiscard]]
eastl::unique_ptr<GraphicsDevice> CreateVulkanDevice(const GraphicsInstance& p_instance,
const DeviceCreateInfo& p_createInfo)
{
return eastl::make_unique<VulkanDevice>(static_cast<const VulkanInstance&>(p_instance),
static_cast<const VulkanSurface*>(p_createInfo.m_surface),
p_createInfo.m_deviceNameHint);
}
/****************************************************************************************/
[[nodiscard]]
bool RegisterVulkanDeviceFactory()
{
const bool inserted = g_graphicsDeviceFactory->Register(GraphicsAPI::Vulkan, &CreateVulkanDevice);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler, inserted, "Failed to register the Vulkan graphics device factory");
return inserted;
}
/****************************************************************************************/
const bool g_vulkanDeviceFactoryRegistered = RegisterVulkanDeviceFactory();
} // namespace Bigfoot::Vulkan
@@ -0,0 +1,58 @@
/*********************************************************************
* \file VulkanImage.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <GraphicsVulkan/VulkanImage.hpp>
namespace Bigfoot::Vulkan
{
VulkanImage::VulkanImage(const vk::Image p_image, const PixelFormat p_format, const vk::Extent2D p_extent):
m_image(p_image),
m_format(p_format),
m_extent(p_extent)
{
}
/****************************************************************************************/
VulkanImage::VulkanImage(VulkanImage&& p_image) noexcept:
GraphicsImage(),
m_image(p_image.m_image),
m_format(p_image.m_format),
m_extent(p_image.m_extent)
{
}
/****************************************************************************************/
VulkanImage& VulkanImage::operator=(VulkanImage&& p_image) noexcept
{
m_image = p_image.m_image;
m_format = p_image.m_format;
m_extent = p_image.m_extent;
return *this;
}
/****************************************************************************************/
PixelFormat VulkanImage::GetFormat() const
{
return m_format;
}
/****************************************************************************************/
glm::uvec2 VulkanImage::GetExtent() const
{
return {m_extent.width, m_extent.height};
}
/****************************************************************************************/
vk::Image VulkanImage::GetHandle() const
{
return m_image;
}
} // namespace Bigfoot::Vulkan
@@ -0,0 +1,189 @@
/*********************************************************************
* \file VulkanInstance.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <GraphicsVulkan/VulkanInstance.hpp>
#include <GraphicsVulkan/GraphicsVulkanAssertHandler.hpp>
#include <GraphicsVulkan/VulkanFormatters.hpp>
#include <Utils/TargetMacros.h>
#include <Engine/EngineInfo_generated.hpp>
#include <EASTL/algorithm.h>
#include <EASTL/string.h>
#include <EASTL/vector.h>
#include <cstdint>
#include <vector>
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE
namespace Bigfoot::Vulkan
{
[[nodiscard]]
std::uint32_t ToVulkanVersion(const Bigfoot::Version p_version)
{
return VK_MAKE_VERSION(p_version.GetMajor(), p_version.GetMinor(), p_version.GetPatch());
}
/****************************************************************************************/
#ifdef BIGFOOT_NOT_OPTIMIZED
vk::Bool32 VulkanDebugCallback(const vk::DebugUtilsMessageSeverityFlagBitsEXT p_severity,
[[maybe_unused]] vk::DebugUtilsMessageTypeFlagsEXT p_type,
const vk::DebugUtilsMessengerCallbackDataEXT* p_callbackData,
[[maybe_unused]] void* p_userData)
{
switch (p_severity)
{
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eError:
BIGFOOT_LOG_ERROR(::Bigfoot::GRAPHICSVULKAN_LOGGER, "{}", p_callbackData->pMessage);
break;
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning:
BIGFOOT_LOG_WARN(::Bigfoot::GRAPHICSVULKAN_LOGGER, "{}", p_callbackData->pMessage);
break;
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eInfo:
BIGFOOT_LOG_INFO(::Bigfoot::GRAPHICSVULKAN_LOGGER, "{}", p_callbackData->pMessage);
break;
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eVerbose:
default:
BIGFOOT_LOG_TRACE(::Bigfoot::GRAPHICSVULKAN_LOGGER, "{}", p_callbackData->pMessage);
break;
}
return VK_FALSE;
}
#endif
/****************************************************************************************/
VulkanInstance::VulkanInstance(const eastl::string_view p_applicationName, const Version p_applicationVersion)
{
const PFN_vkGetInstanceProcAddr getInstanceProcAddr = m_loader.getProcAddress<PFN_vkGetInstanceProcAddr>(
"vkGetInstanceProcAddr");
CRITICAL_ASSERT(GraphicsVulkanAssertHandler, getInstanceProcAddr != nullptr, "vkGetInstanceProcAddr not found!");
VULKAN_HPP_DEFAULT_DISPATCHER.init(getInstanceProcAddr);
const eastl::string applicationName {p_applicationName};
const vk::ApplicationInfo applicationInfo {applicationName.c_str(),
ToVulkanVersion(p_applicationVersion),
BIGFOOT_NAME.data(),
ToVulkanVersion(BIGFOOT_VERSION),
VK_API_VERSION_1_3};
eastl::vector<const char*> enabledLayers;
eastl::vector<const char*> enabledExtensions {
VK_KHR_SURFACE_EXTENSION_NAME,
BIGFOOT_WINDOWS_OR_LINUX(VK_KHR_WIN32_SURFACE_EXTENSION_NAME, VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME)};
#ifdef BIGFOOT_NOT_OPTIMIZED
const vk::ResultValue<std::vector<vk::LayerProperties>> availableLayers = vk::enumerateInstanceLayerProperties();
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
availableLayers.result == vk::Result::eSuccess,
"({}) Failed to enumerate Vulkan instance layers",
availableLayers.result);
const bool validationLayerAvailable = eastl::find_if(availableLayers.value.begin(),
availableLayers.value.end(),
[](const vk::LayerProperties& p_layer)
{
return eastl::string_view {p_layer.layerName.data()} ==
"VK_LAYER_KHRONOS_validation";
}) != availableLayers.value.end();
if (validationLayerAvailable)
{
enabledLayers.push_back("VK_LAYER_KHRONOS_validation");
enabledExtensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
}
else
{
BIGFOOT_LOG_WARN(GRAPHICSVULKAN_LOGGER, "Vulkan validation layer requested but not available");
}
#endif
const vk::InstanceCreateInfo instanceCreateInfo {{}, &applicationInfo, enabledLayers, enabledExtensions};
vk::ResultValue<vk::Instance> instance {vk::Result::eSuccess, vk::Instance {}};
{
BIGFOOT_LSAN_ONLY(const __lsan::ScopedDisabler lsanDisabler;)
instance = vk::createInstance(instanceCreateInfo);
}
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
instance.result == vk::Result::eSuccess,
"({}) Failed to create Vulkan instance",
instance.result);
m_instance = instance.value;
VULKAN_HPP_DEFAULT_DISPATCHER.init(m_instance);
#ifdef BIGFOOT_NOT_OPTIMIZED
if (validationLayerAvailable)
{
vk::DebugUtilsMessengerCreateInfoEXT messengerCreateInfo {};
messengerCreateInfo.messageSeverity = vk::DebugUtilsMessageSeverityFlagsEXT {
vk::DebugUtilsMessageSeverityFlagBitsEXT::eVerbose | vk::DebugUtilsMessageSeverityFlagBitsEXT::eInfo |
vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning | vk::DebugUtilsMessageSeverityFlagBitsEXT::eError};
messengerCreateInfo.messageType = vk::DebugUtilsMessageTypeFlagsEXT {
vk::DebugUtilsMessageTypeFlagBitsEXT::eGeneral | vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation |
vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance};
messengerCreateInfo.pfnUserCallback = &VulkanDebugCallback;
const vk::ResultValue<vk::DebugUtilsMessengerEXT> messenger = m_instance.createDebugUtilsMessengerEXT(
messengerCreateInfo);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
messenger.result == vk::Result::eSuccess,
"({}) Failed to create Vulkan debug messenger",
messenger.result);
m_debugMessenger = messenger.value;
}
#endif
}
/****************************************************************************************/
VulkanInstance::~VulkanInstance()
{
#ifdef BIGFOOT_NOT_OPTIMIZED
if (m_debugMessenger)
{
m_instance.destroyDebugUtilsMessengerEXT(m_debugMessenger);
}
#endif
m_instance.destroy();
}
/****************************************************************************************/
vk::Instance VulkanInstance::GetHandle() const
{
return m_instance;
}
/****************************************************************************************/
[[nodiscard]]
eastl::unique_ptr<GraphicsInstance> CreateVulkanInstance(const eastl::string_view p_applicationName,
const Version p_applicationVersion)
{
return eastl::make_unique<VulkanInstance>(p_applicationName, p_applicationVersion);
}
/****************************************************************************************/
[[nodiscard]]
bool RegisterVulkanInstanceFactory()
{
const bool inserted = g_graphicsInstanceFactory->Register(GraphicsAPI::Vulkan, &CreateVulkanInstance);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler, inserted, "Failed to register the Vulkan graphics instance factory");
return inserted;
}
/****************************************************************************************/
const bool g_vulkanInstanceFactoryRegistered = RegisterVulkanInstanceFactory();
} // namespace Bigfoot::Vulkan
@@ -0,0 +1,55 @@
/*********************************************************************
* \file VulkanPixelFormat.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <GraphicsVulkan/VulkanPixelFormat.hpp>
namespace Bigfoot::Vulkan
{
vk::Format ToVulkanFormat(const PixelFormat p_format)
{
switch (p_format)
{
case PixelFormat::R8G8B8A8Unorm:
return vk::Format::eR8G8B8A8Unorm;
case PixelFormat::R8G8B8A8Srgb:
return vk::Format::eR8G8B8A8Srgb;
case PixelFormat::B8G8R8A8Unorm:
return vk::Format::eB8G8R8A8Unorm;
case PixelFormat::B8G8R8A8Srgb:
return vk::Format::eB8G8R8A8Srgb;
case PixelFormat::A2B10G10R10UnormPack32:
return vk::Format::eA2B10G10R10UnormPack32;
case PixelFormat::R16G16B16A16Sfloat:
return vk::Format::eR16G16B16A16Sfloat;
case PixelFormat::Undefined:
default:
return vk::Format::eUndefined;
}
}
/****************************************************************************************/
PixelFormat FromVulkanFormat(const vk::Format p_format)
{
switch (p_format)
{
case vk::Format::eR8G8B8A8Unorm:
return PixelFormat::R8G8B8A8Unorm;
case vk::Format::eR8G8B8A8Srgb:
return PixelFormat::R8G8B8A8Srgb;
case vk::Format::eB8G8R8A8Unorm:
return PixelFormat::B8G8R8A8Unorm;
case vk::Format::eB8G8R8A8Srgb:
return PixelFormat::B8G8R8A8Srgb;
case vk::Format::eA2B10G10R10UnormPack32:
return PixelFormat::A2B10G10R10UnormPack32;
case vk::Format::eR16G16B16A16Sfloat:
return PixelFormat::R16G16B16A16Sfloat;
default:
return PixelFormat::Undefined;
}
}
} // namespace Bigfoot::Vulkan
@@ -0,0 +1,58 @@
/*********************************************************************
* \file VulkanQueue.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <GraphicsVulkan/VulkanQueue.hpp>
namespace Bigfoot::Vulkan
{
VulkanQueue::VulkanQueue(const vk::Queue p_queue, const std::uint32_t p_familyIndex, const GraphicsQueueType p_type):
m_queue(p_queue),
m_familyIndex(p_familyIndex),
m_type(p_type)
{
}
/****************************************************************************************/
VulkanQueue::VulkanQueue(VulkanQueue&& p_queue) noexcept:
GraphicsQueue(),
m_queue(p_queue.m_queue),
m_familyIndex(p_queue.m_familyIndex),
m_type(p_queue.m_type)
{
}
/****************************************************************************************/
VulkanQueue& VulkanQueue::operator=(VulkanQueue&& p_queue) noexcept
{
m_queue = p_queue.m_queue;
m_familyIndex = p_queue.m_familyIndex;
m_type = p_queue.m_type;
return *this;
}
/****************************************************************************************/
GraphicsQueueType VulkanQueue::GetType() const
{
return m_type;
}
/****************************************************************************************/
vk::Queue VulkanQueue::GetHandle() const
{
return m_queue;
}
/****************************************************************************************/
std::uint32_t VulkanQueue::GetFamilyIndex() const
{
return m_familyIndex;
}
} // namespace Bigfoot::Vulkan
@@ -0,0 +1,70 @@
/*********************************************************************
* \file VulkanSurface.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <GraphicsVulkan/VulkanSurface.hpp>
#include <GraphicsVulkan/GraphicsVulkanAssertHandler.hpp>
#include <GraphicsVulkan/VulkanFormatters.hpp>
namespace Bigfoot::Vulkan
{
VulkanSurface::VulkanSurface(const VulkanInstance& p_instance, const SurfaceCreateInfo& p_surfaceCreateInfo):
m_instance(p_instance)
{
#ifdef BIGFOOT_WINDOWS
const vk::Win32SurfaceCreateInfoKHR createInfo {{},
p_surfaceCreateInfo.m_windowInstance,
p_surfaceCreateInfo.m_windowHandle};
const vk::ResultValue<vk::SurfaceKHR> surface = m_instance.GetHandle().createWin32SurfaceKHR(createInfo);
#elif defined BIGFOOT_LINUX
const vk::WaylandSurfaceCreateInfoKHR createInfo {{}, p_surfaceCreateInfo.m_display, p_surfaceCreateInfo.m_surface};
const vk::ResultValue<vk::SurfaceKHR> surface = m_instance.GetHandle().createWaylandSurfaceKHR(createInfo);
#endif
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
surface.result == vk::Result::eSuccess,
"({}) Failed to create Vulkan surface",
surface.result);
m_surface = surface.value;
}
/****************************************************************************************/
VulkanSurface::~VulkanSurface()
{
m_instance.GetHandle().destroySurfaceKHR(m_surface);
}
/****************************************************************************************/
vk::SurfaceKHR VulkanSurface::GetHandle() const
{
return m_surface;
}
/****************************************************************************************/
[[nodiscard]]
eastl::unique_ptr<GraphicsSurface> CreateVulkanSurface(const GraphicsInstance& p_instance,
const SurfaceCreateInfo& p_surfaceCreateInfo)
{
return eastl::make_unique<VulkanSurface>(static_cast<const VulkanInstance&>(p_instance), p_surfaceCreateInfo);
}
/****************************************************************************************/
[[nodiscard]]
bool RegisterVulkanSurfaceFactory()
{
const bool inserted = g_graphicsSurfaceFactory->Register(GraphicsAPI::Vulkan, &CreateVulkanSurface);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler, inserted, "Failed to register the Vulkan graphics surface factory");
return inserted;
}
/****************************************************************************************/
const bool g_vulkanSurfaceFactoryRegistered = RegisterVulkanSurfaceFactory();
} // namespace Bigfoot::Vulkan
@@ -0,0 +1,235 @@
/*********************************************************************
* \file VulkanSwapchain.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <GraphicsVulkan/VulkanSwapchain.hpp>
#include <GraphicsVulkan/GraphicsVulkanAssertHandler.hpp>
#include <GraphicsVulkan/VulkanFormatters.hpp>
#include <GraphicsVulkan/VulkanPixelFormat.hpp>
#include <GraphicsVulkan/VulkanQueue.hpp>
#include <EASTL/algorithm.h>
#include <EASTL/vector.h>
#include <cstdint>
#include <limits>
#include <span>
#include <vector>
namespace Bigfoot::Vulkan
{
[[nodiscard]]
vk::SurfaceFormatKHR SelectSurfaceFormat(const std::span<const vk::SurfaceFormatKHR> p_formats)
{
const auto it = eastl::find_if(p_formats.begin(),
p_formats.end(),
[](const vk::SurfaceFormatKHR& p_format)
{
return p_format.format == vk::Format::eB8G8R8A8Srgb &&
p_format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
});
return it != p_formats.end() ? *it : p_formats.front();
}
/****************************************************************************************/
[[nodiscard]]
vk::PresentModeKHR SelectPresentMode(const std::span<const vk::PresentModeKHR> p_presentModes)
{
const auto it = eastl::find(p_presentModes.begin(), p_presentModes.end(), vk::PresentModeKHR::eMailbox);
// eFifo is guaranteed by the spec to always be supported
return it != p_presentModes.end() ? *it : vk::PresentModeKHR::eFifo;
}
/****************************************************************************************/
[[nodiscard]]
vk::Extent2D SelectExtent(const vk::SurfaceCapabilitiesKHR& p_capabilities, const glm::uvec2 p_extent)
{
constexpr std::uint32_t undefinedExtent = std::numeric_limits<std::uint32_t>::max();
if (p_capabilities.currentExtent.width != undefinedExtent)
{
return p_capabilities.currentExtent;
}
return {eastl::clamp(p_extent.x, p_capabilities.minImageExtent.width, p_capabilities.maxImageExtent.width),
eastl::clamp(p_extent.y, p_capabilities.minImageExtent.height, p_capabilities.maxImageExtent.height)};
}
/****************************************************************************************/
[[nodiscard]]
vk::CompositeAlphaFlagBitsKHR SelectCompositeAlpha(const vk::CompositeAlphaFlagsKHR p_supportedCompositeAlpha)
{
for (const vk::CompositeAlphaFlagBitsKHR candidate: {vk::CompositeAlphaFlagBitsKHR::eOpaque,
vk::CompositeAlphaFlagBitsKHR::ePreMultiplied,
vk::CompositeAlphaFlagBitsKHR::ePostMultiplied,
vk::CompositeAlphaFlagBitsKHR::eInherit})
{
if (p_supportedCompositeAlpha & candidate)
{
return candidate;
}
}
return vk::CompositeAlphaFlagBitsKHR::eOpaque;
}
/****************************************************************************************/
VulkanSwapchain::VulkanSwapchain(const VulkanDevice& p_device,
const VulkanSurface& p_surface,
const glm::uvec2 p_extent):
m_device(p_device)
{
const vk::PhysicalDevice physicalDevice = p_device.GetPhysicalDeviceHandle();
const vk::SurfaceKHR surface = p_surface.GetHandle();
const vk::ResultValue<vk::SurfaceCapabilitiesKHR> capabilities = physicalDevice.getSurfaceCapabilitiesKHR(surface);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
capabilities.result == vk::Result::eSuccess,
"({}) Failed to get Vulkan surface capabilities",
capabilities.result);
const vk::ResultValue<std::vector<vk::SurfaceFormatKHR>> formats = physicalDevice.getSurfaceFormatsKHR(surface);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
formats.result == vk::Result::eSuccess && !formats.value.empty(),
"({}) Failed to get Vulkan surface formats",
formats.result);
const vk::ResultValue<std::vector<vk::PresentModeKHR>> presentModes = physicalDevice.getSurfacePresentModesKHR(
surface);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
presentModes.result == vk::Result::eSuccess && !presentModes.value.empty(),
"({}) Failed to get Vulkan surface present modes",
presentModes.result);
const vk::SurfaceFormatKHR surfaceFormat = SelectSurfaceFormat(formats.value);
const vk::PresentModeKHR presentMode = SelectPresentMode(presentModes.value);
const vk::Extent2D extent = SelectExtent(capabilities.value, p_extent);
std::uint32_t imageCount = capabilities.value.minImageCount + 1;
if (capabilities.value.maxImageCount > 0)
{
imageCount = eastl::min(imageCount, capabilities.value.maxImageCount);
}
const auto* const graphicsQueue = static_cast<const VulkanQueue*>(p_device.GetQueue(GraphicsQueueType::Graphics));
const auto* const presentQueue = static_cast<const VulkanQueue*>(p_device.GetQueue(GraphicsQueueType::Present));
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
graphicsQueue != nullptr && presentQueue != nullptr,
"Cannot create a swapchain on a device with no graphics or present queue");
const bool sameQueueFamily = graphicsQueue->GetFamilyIndex() == presentQueue->GetFamilyIndex();
eastl::vector<std::uint32_t> queueFamilyIndices;
if (!sameQueueFamily)
{
queueFamilyIndices = {graphicsQueue->GetFamilyIndex(), presentQueue->GetFamilyIndex()};
}
const vk::SwapchainCreateInfoKHR swapchainCreateInfo {
{},
surface,
imageCount,
surfaceFormat.format,
surfaceFormat.colorSpace,
extent,
1,
vk::ImageUsageFlagBits::eColorAttachment,
sameQueueFamily ? vk::SharingMode::eExclusive : vk::SharingMode::eConcurrent,
queueFamilyIndices,
capabilities.value.currentTransform,
SelectCompositeAlpha(capabilities.value.supportedCompositeAlpha),
presentMode,
VK_TRUE};
const vk::ResultValue<vk::SwapchainKHR> swapchain = p_device.GetHandle().createSwapchainKHR(swapchainCreateInfo);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
swapchain.result == vk::Result::eSuccess,
"({}) Failed to create Vulkan swapchain",
swapchain.result);
m_swapchain = swapchain.value;
const vk::ResultValue<std::vector<vk::Image>> images = p_device.GetHandle().getSwapchainImagesKHR(m_swapchain);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
images.result == vk::Result::eSuccess,
"({}) Failed to get Vulkan swapchain images",
images.result);
const PixelFormat imageFormat = FromVulkanFormat(surfaceFormat.format);
m_images.reserve(images.value.size());
for (const vk::Image image: images.value)
{
m_images.emplace_back(image, imageFormat, extent);
}
}
/****************************************************************************************/
VulkanSwapchain::~VulkanSwapchain()
{
m_device.GetHandle().destroySwapchainKHR(m_swapchain);
}
/****************************************************************************************/
std::uint32_t VulkanSwapchain::GetImageCount() const
{
return static_cast<std::uint32_t>(m_images.size());
}
/****************************************************************************************/
const GraphicsImage& VulkanSwapchain::GetImage(const std::uint32_t p_index) const
{
CRITICAL_ASSERT(GraphicsVulkanAssertHandler,
p_index < m_images.size(),
"Swapchain image index {} out of range (swapchain has {} images)",
p_index,
m_images.size());
return m_images[p_index];
}
/****************************************************************************************/
vk::SwapchainKHR VulkanSwapchain::GetHandle() const
{
return m_swapchain;
}
/****************************************************************************************/
eastl::span<const VulkanImage> VulkanSwapchain::GetImages() const
{
return {m_images.data(), m_images.size()};
}
/****************************************************************************************/
[[nodiscard]]
eastl::unique_ptr<GraphicsSwapchain> CreateVulkanSwapchain(const SwapchainCreateInfo& p_createInfo)
{
return eastl::make_unique<VulkanSwapchain>(static_cast<const VulkanDevice&>(*p_createInfo.m_device),
static_cast<const VulkanSurface&>(*p_createInfo.m_surface),
p_createInfo.m_extent);
}
/****************************************************************************************/
[[nodiscard]]
bool RegisterVulkanSwapchainFactory()
{
const bool inserted = g_graphicsSwapchainFactory->Register(GraphicsAPI::Vulkan, &CreateVulkanSwapchain);
CRITICAL_ASSERT(GraphicsVulkanAssertHandler, inserted, "Failed to register the Vulkan graphics swapchain factory");
return inserted;
}
/****************************************************************************************/
const bool g_vulkanSwapchainFactoryRegistered = RegisterVulkanSwapchainFactory();
} // namespace Bigfoot::Vulkan
@@ -13,6 +13,6 @@ bigfoot_create_package_lib(
"${PrivateLibraries}"
"${BigfootPublicDependencies}"
"${BigfootPrivateDependencies}"
"")
"Bigfoot/Libs")
bigfoot_create_logger()

Some files were not shown because too many files have changed in this diff Show More