Skip to content

Vendor oneTBB 2023.0.0 (headers, import libs, DLLs) - #651

Open
noisethanks wants to merge 1 commit into
themrdemonized:all-in-one-vs2022-wpo-mtfrom
noisethanks:feature/tbb_vendor
Open

noisethanks wants to merge 1 commit into
themrdemonized:all-in-one-vs2022-wpo-mtfrom
noisethanks:feature/tbb_vendor

Conversation

@noisethanks

Copy link
Copy Markdown

Vendor oneTBB 2023.0.0

Replaces the currently-vendored TBB 2020.0 (classic, pre-oneAPI-rebrand)
with oneTBB 2023.0.0, the current stable release. Headers move from
src/3rd party/tbb/ to a combination of a thin forwarding layer there plus
the real implementation under the new src/3rd party/oneapi/tbb/ - this is
how oneTBB itself organizes its public headers, not a restructuring choice
made here.

Also included, since they were dependent on/adjacent to this swap:

  • tbb.dll/tbb.lib replaced with tbb12.dll/tbb12.lib + a compatibility
    tbb.lib alias (oneTBB renames the core binary; "12" is a binary-interface
    version, unrelated to the TBB release version). tbbmalloc.dll/.lib and
    tbbmalloc_proxy.dll/.lib added alongside - not currently used by any code
    (nothing in this PR wires them in), but this is the natural place to
    vendor them since they ship as a matched set with the core library.
  • src/3rd party/serial/ removed - a 2-file directory that existed only
    because TBB 2020.0's own parallel_for.h referenced it as a fallback;
    oneTBB's version doesn't, leaving it orphaned.
  • .gitignore fixed so the new import libraries under sdk/libraries/x64/
    actually commit (the existing /**/x64/ rule was silently excluding them,
    which would have broken linking for anyone building from a fresh clone).

Nothing in the existing engine currently references any TBB symbol, so this
verified as a behavior-preserving change: 0 build errors, and the resulting
exe's import table is byte-for-byte identical to current master (36 DLLs,
no tbb* entries either before or after).

The one exception: src/Layers/xrRender/ParticleEffect.cpp has a
pre-existing, currently-dead #include <tbb/...> that now resolves against
the 2023 headers instead of 2020's. This produces a few dozen bytes of
.rdata/.data difference in that one object file - no executable code
changes, confirmed by diffing the compiled output.

This is the first of three PRs (the other two - TBB-backed scalable
allocator, and a PPL-to-TBB scheduler swap in _thread_types.h - are
independent siblings, both based on this branch, not on each other).
They're not showing up as PRs against this repo yet since they depend on
this branch existing here first; linking them for visibility:
noisethanks#1
noisethanks#2

Adds the oneTBB 2023.0.0 distribution as a base layer, with no consumer
wiring. Nothing in the engine references these files yet, so this commit
is functionally inert: the build output is unchanged.

 - src/3rd party/tbb, src/3rd party/oneapi: public headers, replacing
   the stale TBB header drop that was already in the tree.
 - sdk/libraries/x64: tbb.lib, tbb12.lib, tbbmalloc.lib,
   tbbmalloc_proxy.lib (needed at link time by later layers, and by
   oneTBB's implicit MSVC auto-linkage).
 - sdk/binaries: the matching tbb.dll, tbb12.dll, tbbmalloc.dll,
   tbbmalloc_proxy.dll.

Also removes src/3rd party/serial/, which was orphaned: its only
referrer was the old 3rd party/tbb/parallel_for.h, which this drop
replaces.

.gitignore needed a fix so the import libs are actually committed. The
pre-existing /**/x64/ rule excludes the *directory*, and git will not
descend into an excluded directory -- so the directory exclusion is
lifted first, the contents re-ignored, then the four .lib files
re-included by name.
@noisethanks

Copy link
Copy Markdown
Author

I have a test build working with this PR as well as allocator and scheduler. Here's the branch. tbb_build. Build can be found in Releases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant