-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbinding.yml
More file actions
103 lines (97 loc) · 5 KB
/
Copy pathbinding.yml
File metadata and controls
103 lines (97 loc) · 5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Binding manifest — see https://github.com/EvergineTeam/Evergine.Bindings
# Schema: https://github.com/EvergineTeam/Evergine.Bindings/blob/main/binding.schema.json
toolbox: 1.29.0
package:
id: Evergine.Bindings.Embree
project: Evergine.Bindings.Embree/Evergine.Bindings.Embree.csproj
target-framework: net10.0
# linux-x64, unlike most bindings in the fleet. The CppAst generator parses against the
# stub system headers in EmbreeGen/Headers/stubs against a pinned x86_64 target, so it
# does not depend on the libclang include paths that force MeshOptimizer, RenderDoc and
# KTX to generate on Windows. Do not "fix" this by moving it to windows-latest.
runtime-identifier: linux-x64
upstream:
kind: git-tree
language: cpp
project: https://github.com/RenderKit/embree
version-from: git-release
release:
# Tagged releases, not main. This binding ships native binaries, and the headers and
# those binaries have to come from one revision of Embree; a branch would move the
# headers underneath libraries built from something else. `current` is rewritten by
# binding-fetch-upstream when it brings in a newer release, which makes this the one
# place the version lives.
track: stable
current: v4.4.1
# One entry per header rather than the directory, which is what this used to be. A
# directory source is compared by hashing everything under `path`, and this tree can
# never match upstream's: include/embree4 also carries eight .isph files for ISPC, which
# this binding does not use, and it carries a rtcore_config.h that upstream does not have
# (see the NOTE below). The comparison therefore reported "sources changed" on every run,
# even with the release sitting still — which fails the CD's native-coherence guard and
# would have the binding-updater open a pull request every month for nothing.
#
# Listed individually, each source is hashed as a single file, so what is not listed is
# simply not compared.
sources:
- repo: RenderKit/embree
remote-path: include/embree4/rtcore.h
path: EmbreeGen/Headers/embree4/rtcore.h
format: c-header
- repo: RenderKit/embree
remote-path: include/embree4/rtcore_common.h
path: EmbreeGen/Headers/embree4/rtcore_common.h
format: c-header
- repo: RenderKit/embree
remote-path: include/embree4/rtcore_device.h
path: EmbreeGen/Headers/embree4/rtcore_device.h
format: c-header
- repo: RenderKit/embree
remote-path: include/embree4/rtcore_buffer.h
path: EmbreeGen/Headers/embree4/rtcore_buffer.h
format: c-header
- repo: RenderKit/embree
remote-path: include/embree4/rtcore_ray.h
path: EmbreeGen/Headers/embree4/rtcore_ray.h
format: c-header
- repo: RenderKit/embree
remote-path: include/embree4/rtcore_geometry.h
path: EmbreeGen/Headers/embree4/rtcore_geometry.h
format: c-header
- repo: RenderKit/embree
remote-path: include/embree4/rtcore_scene.h
path: EmbreeGen/Headers/embree4/rtcore_scene.h
format: c-header
- repo: RenderKit/embree
remote-path: include/embree4/rtcore_builder.h
path: EmbreeGen/Headers/embree4/rtcore_builder.h
format: c-header
- repo: RenderKit/embree
remote-path: include/embree4/rtcore_quaternion.h
path: EmbreeGen/Headers/embree4/rtcore_quaternion.h
format: c-header
generator:
project: EmbreeGen/EmbreeGen.csproj
name: EmbreeGen
output:
- Evergine.Bindings.Embree/Generated
# NOTE — rtcore_config.h is not part of the upstream sources above. Embree's CMake generates
# it, and it decides the layout of several public structs: RTC_MAX_INSTANCE_LEVEL_COUNT sizes
# the instID arrays in RTCHit and RTCRayQueryContext, RTC_GEOMETRY_INSTANCE_ARRAY adds the
# instPrimID ones, and RTC_MIN_WIDTH adds a field to RTCIntersectArguments. The copy vendored
# in EmbreeGen/Headers/embree4/ therefore has to come from the same build as the binaries, and
# it does: embree-cmake.yml emits it alongside them. Refreshing the header tree leaves it
# alone, because the git-tree adapter only writes the files it fetched.
#
# NOTE — this package ships native binaries under Evergine.Bindings.Embree/runtimes. Headers
# and binaries must come from the same upstream revision, so a header bump is only valid
# together with a native rebuild. That rebuild is not optional and CI would not catch it being
# skipped: P/Invoke binds late, so a mismatched package compiles, passes CI, publishes, and
# then throws in the consumer's application. The CD keeps the two in step — embree-cmake.yml
# rebuilds every platform at the resolved release before the headers are committed. Do not
# bump the header by hand.
#
# NOTE — there is no win-arm64. Embree 4.4.1 does not build for Windows on ARM with either
# toolset available on the runner; see the tracking issue. Do not add the RID back without a
# green build, and do not ship a binary produced by forcing flags past Embree's CMake: a wrong
# SIMD path in a ray tracing kernel returns wrong intersections rather than crashing.