82 Commits

Author SHA1 Message Date
Matt Stevens
276f4cbcfa Make R2 uploads more resilient in CI 2026-07-30 15:54:53 +01:00
Matt Stevens
7cd3294971 vfx_vulkan: Slang compiler, remove DXC and dead D3D11 backends
still using DXC as a preprocessor for ANTLR, but that can probably be
fucked off
2026-07-29 10:16:19 +01:00
Lorenz Junglas
62c34cc468 Remove ReferenceAssemblies upload use BuildArtifacts instead (#5309)
* Report API version and channel for build artifacts

* Add small PackageBuild exe that will replace most of CLLCompile on the backend

* Remove ReferenceAssembly upload
2026-07-14 13:22:36 +02:00
Lorenz Junglas
b6b8db0d81 Use query param instead of header for build tagging (#5289) 2026-07-08 09:14:03 +02:00
Lorenz Junglas
6c7631b309 Tag ReferenceBuild uploads with EngineVersion (#5274) 2026-07-07 21:14:26 +02:00
Lorenz Junglas
788af300ba Fine tune ASAN make it easier to enable (#5229)
Some changes to make ASAN builds run faster from 6x slowdown down to 2x.
2026-07-03 10:29:45 +02:00
Matt Stevens
655bba77f2 Strip more stuff in build artifacts same as Steam builds 2026-06-26 14:24:20 +01:00
Matt Stevens
ca04cc908e Report builds to backend 2026-06-26 13:35:49 +01:00
Matt Stevens
3d7f2ee459 Upload a build zip for each CI and PR run (#5165) 2026-06-25 22:30:06 +01:00
Matt Stevens
5ecf35f95a ShaderCompiler can recompile shader_c files against the current engine shader sources 2026-06-25 11:04:45 +01:00
Lorenz Junglas
e6c9d99962 Problem matchers 2026-06-19 13:49:41 +01:00
Lorenz Junglas
8bb48bac56 Move Pipelines out of SboxBuild into GitHub yml
Allows us to get rid of a ton of abstraction in SboxBuild, and gets rid of a lot of GitHub API plumbing.
I feel like now that our workflows are more complex it's nicer to just use GitHub directly rather than having our own pipeline abstraction in SboxBuild.
This way we get nicer logging and error reporting, which we can\t achieve through GitHub API.
2026-06-19 13:49:41 +01:00
Matt Stevens
3f11417817 Whitelist: explicit Unsafe/Span/Memory (#5077)
* Whitelist System.Memory and System.ReadOnlyMemory (without pinning)
* Be very explicit with System.Span and System.ReadOnlySpan whitelists, do not allow pinnables
* Be completely explicit with Unsafe IL whitelist, allow Unsafe.SizeOf<T>
* BlacklistCodeWalker can have an allow list
* Compiler blacklist explicitly bans CreateSpan, allows Unsafe.SizeOf<T>
* Whitelist System.IO.InvalidDataException
* Better InlineArray whitelisting for compiler generated code
* WhitelistGen: Creates explicit signatures from wildcard rules
* Claude skill for whitelisting, uses the WhitelistGen tool to be very explicit and makes a good effort to security review
2026-06-17 18:28:47 +01:00
Matt Stevens
5d6dccfc38 Exclude live backend tests from CI too, there are failing tests here that passed through the PR 2026-06-12 22:29:41 +01:00
Garry Newman
d95169d8fa Unit Test Cleanup (#5064)
* Move all unit tests to Engine/Tests
* Fix Margin.EdgeSubtract
* Fix Capsule.Contains
* EnvironmentVariables.Remove if it's null
* Fixed ray trace never returning startedsolid
* Fix HistoryList.Navigate on empty list
* Fix GameObject.WorldPosition accepting NaNs
* Fix flex: initial expanding to the wrong grow/shrink
* Translation.TryConvert shouldn't throw on invalid enum strings
* Skip sound file tests on machines with no audio device
2026-06-12 13:23:50 +01:00
Garry Newman
0e02916f6a Clean InteropGen (#5051) 2026-06-11 10:36:53 +00:00
Matt Stevens
7d99aa8ef5 Upload actual reference assemblies, remove some assemblies we don't need 2026-06-03 00:53:52 +01:00
Matt Stevens
18dd8ac631 Upload reference assemblies to backend as part of CI 2026-06-02 10:16:08 +01:00
Lorenz Junglas
a4da4caa26 Audio System Refactor (#4925)
* Remove some dead native sound code

* Rewrite managed audio system to be lock-free

Use a snapshot triple buffering approach (main thread collect snapshots -> mixingthread processes), similar to how we handle batch drawing (mainthread collects snapshots -> render threads processes)

* Remove/Rework managed steam audio abstraction

* Add just Steam Audio effects, build ourselves via vpc

Compile steamaudio with AVX1
2026-05-26 19:49:54 +02:00
Matt Stevens
1ed02a54fe Switch from AzureSignTool to sign dotnet tool with Azure Trusted Signing 2026-05-15 22:51:19 +01:00
Matt Stevens
f95d2a8c0c SyncPublicRepo: don't upload duplicate artifacts, e.g the Qt dlls that are LFS artifacts and then build artifacts when they're code signed (favor the build artifact) 2026-05-05 19:04:52 +01:00
Garry Newman
3be21eee9d New review api (#4722)
* Moved Api
* Update review to use new api
2026-05-01 13:33:19 +01:00
Matt Stevens
25a78fdc1a Code sign everything, any unsigned binaries are going to make Windows go ape shit 2026-04-27 14:46:52 +01:00
Matt Stevens
d4609fd1b0 Loading .dll or .so is done at runtime instead of InteropGen, so we can use the same .NET binaries across all platforms 2026-04-26 15:07:35 +01:00
Matt Stevens
f38a1b5766 Exclude Linux debug files 2026-04-26 10:27:13 +01:00
Matt Stevens
1fa6eff252 Move GameCache to Upload job instead of Build job 2026-04-26 09:47:28 +01:00
Matt Stevens
9f696263bd vpk.exe does not exist, don't try to codesign it 2026-04-25 21:07:34 +01:00
Matt Stevens
af84e5b549 SboxBuild: batch code sign all our binaries at once 2026-04-25 20:39:36 +01:00
Matt Stevens
db68a71707 Split SboxBuild into two clear jobs: builds and upload - so we can upload multiple platforms and async this stuff a bit better
* Sync job becomes upload job, gets artifacts from different platform runners and uploads to Steam, still does git public sync
* Make our own actions/upload-artifact that uses networked storage instead of GitHub
2026-04-25 09:58:52 +01:00
Matt Stevens
d79344d8d1 EditorLauncher for editor app on Steam, makes sure the main app is installed and acts as a forwarder [skip ci] 2026-04-23 16:32:04 +01:00
Matt Stevens
57895ce131 SyncPublicRepo: remove --force flag [skip ci] 2026-04-16 13:37:03 +01:00
Lorenz Junglas
43583e9821 Use filter-repo blob callback instead of filtering via git lfs ls-files (#4551)
When an LFS file is renamed (e.g. `libHarfBuzzSharp.so.0.60830.0` to `libHarfBuzzSharp.so`) the LFS blob stays the same. `git lfs ls-files --all --deleted` deduplicates by blob OID, so it only reports the new filename.
The old filename disappears from the list, changing historical commits and cascading a full history rewrite.

Replace the path-based LFS exclusion with inline blob content detection using git-filter-repo's `blob_callback`.
Any blob starting with the LFS pointer header is stripped regardless of  filename, making the filter immune to renames
2026-04-16 13:23:26 +02:00
Lorenz Junglas
a02d4951a6 Use Plat_ExitProcess after successful shader compilation (#4483) 2026-04-07 13:17:13 +02:00
Garry Newman
a9f2e03fb1 Doo (#4432)
Add Doo to the engine, a simple stack based action system.
2026-04-07 11:23:44 +01:00
Matt Stevens
5f2bd95c5e SyncPublicRepo: hlsl files are all ours, whitelist them for shader dir 2026-03-30 16:44:43 +01:00
Sam Pavlovic
73a5d11304 Unix Launch Fixes (#4304)
* Gitignore for unix objects and bins

* libmpg123 mac

* try with kosmiskrisp instead of molten xx, much less problematic?

* Explicit cast for box3d and include for utlblockmemory to make clang happ

* Simple DLLImportResolver for the 3 platforms, on linux/mac it tries to load DLLs from managed/ directory even with PATH being set, and backport the steamworks behaviour from Facepunch.Steamwokrs

* Dont ShaderCompile outside of tools, resourcecompiler is not even enabled there

* Only enable steam audio binaural effect on windows, we self compile it with that feature on there, dont bother yet for linux/mac until we have a better way to do dependency track

* Fix DLLImportResolver, also let's try to keep just a single set of binaries for managed without platform variants

* Fix rect_t interop on ARM64

On ARM64, NativeRect (4 floats = HFA) gets passed in float registers (v0-v3), but the C++ function reads from x1 expecting a pointer → null crash.
On x64 Windows, passing a 16-byte struct "by value" through an unmanaged function pointer accidentally works because the x64 ABI passes it by hidden pointer anyway. On ARM64, NativeRect (4 floats = HFA) goes into float registers v0-v3, leaving x1=0x0 for the C++ Rect_t* parameter.

* Building the load path via string interpolation hardcodes "/" and can produce double-separators because NetCore.NativeDllPath already includes a trailing slash. For consistency with the rest of the codebase (e.g., InteropGen uses Path.Combine with NativeDllPath) and to avoid path quirks across platforms, use Path.Combine(NetCore.NativeDllPath, nativeName).

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Format

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-25 16:08:21 +01:00
Garry Newman
ee59a164ab Interop optimize (#4397)
* Do null checks inline
* make handle structs readonly
* readonly structs
* We don't need InteropWString
* Don't add a $ to these strings
2026-03-25 14:05:56 +00:00
Sam Pavlovic
d13b522781 Remove prebuilt vpc binaries on posix & Developer-BuildVpc, make BuildVpc a step on SboxBuild (#4305) 2026-03-16 08:06:52 +01:00
Lorenz Junglas
85dc57dda6 Run tests with no build flag (#4259) 2026-03-16 07:59:21 +01:00
Lorenz Junglas
e55789724f PR builds Skip C++ build and download artifacts instead (#4250) 2026-03-12 10:05:56 +01:00
Lorenz Junglas
b92a67f8e1 Sync: Upload a second manifest keyed by private commit hash (#4246) 2026-03-06 12:49:11 +00:00
Lorenz Junglas
bfc42d0a17 Faster public sync (#4245)
* Calculate file sizes and sha256 in parallel, since this is I/O bound

* Batch all files and use a single rclone call
2026-03-06 10:28:11 +01:00
Matt Stevens
c5cfe6f165 SyncPublicRepo: Handle symlinks 2026-02-17 12:20:19 +00:00
Matt Stevens
c0c6ed02d5 InteropGen: fix non-small struct args (over 8 bytes) being passed a ptr in managed but not received as a ptr in native, this only accidentally works on MSVC and fucks up massively on anything else 2026-02-16 14:47:55 +00:00
Matt Stevens
8ea6a5f6f9 Use AzureSignTool instead of relying on an installed certificate 2026-02-11 14:05:32 +00:00
Matt Stevens
1a110ed82b Sign Qt binaries (self compiled) for Windows Smart App Control bullshit 2026-02-09 09:36:18 +00:00
Matt Stevens
5423247b66 vswhere only finds visual studio 2026-01-29 13:14:07 +00:00
Matt Stevens
cc1df7e75a Map all the new files to the public repo 2026-01-26 13:31:46 +00:00
Lorenz Junglas
b8cc400d27 Revert most of SyncScript: Do rclone destination exists check ourselves (#3888) (#3891)
Turns out the --ignore-existing check works fine and something else was causing increased uploads.
Kept the cleaned up logging.
2026-01-26 08:30:02 +00:00
Lorenz Junglas
a82e13bf4b SyncScript: Do rclone destination exists check ourselves (#3888)
That way we actually know how much is uploaded

Also gets rid of verbose per file logging.
2026-01-23 12:39:33 +00:00