Commit bf6a591
committed
GPU: extend two existing OpenCL device workarounds to Metal
Both of these already exist for OpenCL, for reasons that apply unchanged to
Metal.
The processing settings block in GPUSettingsList.h is skipped for OpenCL because
it declares std::string and std::vector members, which GPUSettings.h explicitly
does not include for device code. Metal needs the same exclusion. These configs
are host-side only: GPUParam carries GPUSettingsRec and GPUSettingsParam, and the
processing settings appear only as pointer arguments to host methods, so nothing
transferred changes shape.
GPUCommonBitSet already carries an extra constructor for OpenCL's __constant.
Metal needs the opposite: MSL will not use a user-declared copy constructor to
build an object in the constant address space, which is where GPUconstexpr()
arrays of bitset live, and leaving the copy constructor implicit makes them
constructible again. That one line accounted for 84 of the remaining
diagnostics, across DetID and GlobalTrackID.
Metal translation unit: 136 errors to 27.1 parent 900b5e4 commit bf6a591
2 files changed
Lines changed: 7 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
221 | 221 | | |
222 | 222 | | |
223 | 223 | | |
224 | | - | |
| 224 | + | |
225 | 225 | | |
226 | 226 | | |
227 | 227 | | |
| |||
428 | 428 | | |
429 | 429 | | |
430 | 430 | | |
431 | | - | |
| 431 | + | |
432 | 432 | | |
433 | 433 | | |
434 | 434 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
40 | 44 | | |
| 45 | + | |
41 | 46 | | |
42 | 47 | | |
43 | 48 | | |
| |||
0 commit comments