()
| 305 | |
| 306 | impl Symbols { |
| 307 | fn new() -> Self { |
| 308 | let builtins = BUILTINS |
| 309 | .iter() |
| 310 | .map(|&(a, b)| (a, SpirvAttribute::Builtin(b))); |
| 311 | let storage_classes = STORAGE_CLASSES |
| 312 | .iter() |
| 313 | .map(|&(a, b)| (a, SpirvAttribute::StorageClass(b))); |
| 314 | let execution_models = EXECUTION_MODELS |
| 315 | .iter() |
| 316 | .map(|&(a, b)| (a, SpirvAttribute::Entry(b.into()))); |
| 317 | let custom_attributes = [ |
| 318 | ( |
| 319 | "sampler", |
| 320 | SpirvAttribute::IntrinsicType(IntrinsicType::Sampler), |
| 321 | ), |
| 322 | ( |
| 323 | "generic_image_type", |
| 324 | SpirvAttribute::IntrinsicType(IntrinsicType::GenericImageType), |
| 325 | ), |
| 326 | ( |
| 327 | "acceleration_structure", |
| 328 | SpirvAttribute::IntrinsicType(IntrinsicType::AccelerationStructureKhr), |
| 329 | ), |
| 330 | ( |
| 331 | "ray_query", |
| 332 | SpirvAttribute::IntrinsicType(IntrinsicType::RayQueryKhr), |
| 333 | ), |
| 334 | ("block", SpirvAttribute::Block), |
| 335 | ("flat", SpirvAttribute::Flat), |
| 336 | ("invariant", SpirvAttribute::Invariant), |
| 337 | ( |
| 338 | "sampled_image", |
| 339 | SpirvAttribute::IntrinsicType(IntrinsicType::SampledImage), |
| 340 | ), |
| 341 | ( |
| 342 | "runtime_array", |
| 343 | SpirvAttribute::IntrinsicType(IntrinsicType::RuntimeArray), |
| 344 | ), |
| 345 | ( |
| 346 | "matrix", |
| 347 | SpirvAttribute::IntrinsicType(IntrinsicType::Matrix), |
| 348 | ), |
| 349 | ("buffer_load_intrinsic", SpirvAttribute::BufferLoadIntrinsic), |
| 350 | ( |
| 351 | "buffer_store_intrinsic", |
| 352 | SpirvAttribute::BufferStoreIntrinsic, |
| 353 | ), |
| 354 | ] |
| 355 | .iter() |
| 356 | .cloned(); |
| 357 | let attributes_iter = builtins |
| 358 | .chain(storage_classes) |
| 359 | .chain(execution_models) |
| 360 | .chain(custom_attributes) |
| 361 | .map(|(a, b)| (Symbol::intern(a), b)); |
| 362 | let mut attributes = FxHashMap::default(); |
| 363 | for (a, b) in attributes_iter { |
| 364 | let old = attributes.insert(a, b); |
nothing calls this directly
no test coverage detected