Skip to content

Commit

Permalink
Convert Snapshot Configuration to TOML (#7160)
Browse files Browse the repository at this point in the history
* Prepare for Toml

* Convert Configurations Entirely To TOML
  • Loading branch information
cwfitzgerald authored Feb 22, 2025
1 parent 473dd2f commit a8af685
Show file tree
Hide file tree
Showing 253 changed files with 1,027 additions and 1,251 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions naga/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,5 @@ ron = "0.8.0"
rspirv = { version = "0.11", git = "https://github.com/gfx-rs/rspirv", rev = "b969f175d5663258b4891e44b76c1544da9661ab" }
serde = { workspace = true, features = ["default", "derive"] }
spirv = { version = "0.3", features = ["deserialize"] }
toml = "0.8"
walkdir.workspace = true
26 changes: 26 additions & 0 deletions naga/src/back/glsl/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,28 @@ pub(crate) const FREXP_FUNCTION: &str = "naga_frexp";
// Must match code in glsl_built_in
pub const FIRST_INSTANCE_BINDING: &str = "naga_vs_first_instance";

#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
struct BindingMapSerialization {
resource_binding: crate::ResourceBinding,
bind_target: u8,
}

#[cfg(feature = "deserialize")]
fn deserialize_binding_map<'de, D>(deserializer: D) -> Result<BindingMap, D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::Deserialize;

let vec = Vec::<BindingMapSerialization>::deserialize(deserializer)?;
let mut map = BindingMap::default();
for item in vec {
map.insert(item.resource_binding, item.bind_target);
}
Ok(map)
}

/// Mapping between resources and bindings.
pub type BindingMap = std::collections::BTreeMap<crate::ResourceBinding, u8>;

Expand Down Expand Up @@ -266,6 +288,10 @@ pub struct Options {
/// Configuration flags for the [`Writer`].
pub writer_flags: WriterFlags,
/// Map of resources association to binding locations.
#[cfg_attr(
feature = "deserialize",
serde(deserialize_with = "deserialize_binding_map")
)]
pub binding_map: BindingMap,
/// Should workgroup variables be zero initialized (by polyfilling)?
pub zero_initialize_workgroup_memory: bool,
Expand Down
89 changes: 88 additions & 1 deletion naga/src/back/hlsl/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,28 @@ pub struct OffsetsBindTarget {
pub size: u32,
}

#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
struct BindingMapSerialization {
resource_binding: crate::ResourceBinding,
bind_target: BindTarget,
}

#[cfg(feature = "deserialize")]
fn deserialize_binding_map<'de, D>(deserializer: D) -> Result<BindingMap, D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::Deserialize;

let vec = Vec::<BindingMapSerialization>::deserialize(deserializer)?;
let mut map = BindingMap::default();
for item in vec {
map.insert(item.resource_binding, item.bind_target);
}
Ok(map)
}

// Using `BTreeMap` instead of `HashMap` so that we can hash itself.
pub type BindingMap = std::collections::BTreeMap<crate::ResourceBinding, BindTarget>;

Expand Down Expand Up @@ -245,10 +267,63 @@ impl Default for SamplerHeapBindTargets {
}
}

#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
struct SamplerIndexBufferBindingSerialization {
group: u32,
bind_target: BindTarget,
}

#[cfg(feature = "deserialize")]
fn deserialize_sampler_index_buffer_bindings<'de, D>(
deserializer: D,
) -> Result<SamplerIndexBufferBindingMap, D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::Deserialize;

let vec = Vec::<SamplerIndexBufferBindingSerialization>::deserialize(deserializer)?;
let mut map = SamplerIndexBufferBindingMap::default();
for item in vec {
map.insert(
SamplerIndexBufferKey { group: item.group },
item.bind_target,
);
}
Ok(map)
}

// We use a BTreeMap here so that we can hash it.
pub type SamplerIndexBufferBindingMap =
std::collections::BTreeMap<SamplerIndexBufferKey, BindTarget>;

#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
struct DynamicStorageBufferOffsetTargetSerialization {
index: u32,
bind_target: OffsetsBindTarget,
}

#[cfg(feature = "deserialize")]
fn deserialize_storage_buffer_offsets<'de, D>(
deserializer: D,
) -> Result<DynamicStorageBufferOffsetsTargets, D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::Deserialize;

let vec = Vec::<DynamicStorageBufferOffsetTargetSerialization>::deserialize(deserializer)?;
let mut map = DynamicStorageBufferOffsetsTargets::default();
for item in vec {
map.insert(item.index, item.bind_target);
}
Ok(map)
}

pub type DynamicStorageBufferOffsetsTargets = std::collections::BTreeMap<u32, OffsetsBindTarget>;

/// Shorthand result used internally by the backend
type BackendResult = Result<(), Error>;

Expand All @@ -269,6 +344,10 @@ pub struct Options {
/// The hlsl shader model to be used
pub shader_model: ShaderModel,
/// Map of resources association to binding locations.
#[cfg_attr(
feature = "deserialize",
serde(deserialize_with = "deserialize_binding_map")
)]
pub binding_map: BindingMap,
/// Don't panic on missing bindings, instead generate any HLSL.
pub fake_missing_bindings: bool,
Expand All @@ -280,9 +359,17 @@ pub struct Options {
/// Bind target of the sampler heap and comparison sampler heap.
pub sampler_heap_target: SamplerHeapBindTargets,
/// Mapping of each bind group's sampler index buffer to a bind target.
#[cfg_attr(
feature = "deserialize",
serde(deserialize_with = "deserialize_sampler_index_buffer_bindings")
)]
pub sampler_buffer_binding_map: SamplerIndexBufferBindingMap,
/// Bind target for dynamic storage buffer offsets
pub dynamic_storage_buffer_offsets_targets: std::collections::BTreeMap<u32, OffsetsBindTarget>,
#[cfg_attr(
feature = "deserialize",
serde(deserialize_with = "deserialize_storage_buffer_offsets")
)]
pub dynamic_storage_buffer_offsets_targets: DynamicStorageBufferOffsetsTargets,
/// Should workgroup variables be zero initialized (by polyfilling)?
pub zero_initialize_workgroup_memory: bool,
/// Should we restrict indexing of vectors, matrices and arrays?
Expand Down
26 changes: 26 additions & 0 deletions naga/src/back/msl/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,28 @@ pub struct BindTarget {
pub mutable: bool,
}

#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
struct BindingMapSerialization {
resource_binding: crate::ResourceBinding,
bind_target: BindTarget,
}

#[cfg(feature = "deserialize")]
fn deserialize_binding_map<'de, D>(deserializer: D) -> Result<BindingMap, D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::Deserialize;

let vec = Vec::<BindingMapSerialization>::deserialize(deserializer)?;
let mut map = BindingMap::default();
for item in vec {
map.insert(item.resource_binding, item.bind_target);
}
Ok(map)
}

// Using `BTreeMap` instead of `HashMap` so that we can hash itself.
pub type BindingMap = std::collections::BTreeMap<crate::ResourceBinding, BindTarget>;

Expand All @@ -70,6 +92,10 @@ pub type BindingMap = std::collections::BTreeMap<crate::ResourceBinding, BindTar
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
#[cfg_attr(any(feature = "serialize", feature = "deserialize"), serde(default))]
pub struct EntryPointResources {
#[cfg_attr(
feature = "deserialize",
serde(deserialize_with = "deserialize_binding_map")
)]
pub resources: BindingMap,

pub push_constant_buffer: Option<Slot>,
Expand Down
3 changes: 0 additions & 3 deletions naga/tests/in/6220-break-from-loop.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/6220-break-from-loop.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV"
3 changes: 0 additions & 3 deletions naga/tests/in/6438-conflicting-idents.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/6438-conflicting-idents.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | GLSL | HLSL | WGSL"
3 changes: 0 additions & 3 deletions naga/tests/in/6772-unpack-expr-accesses.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/6772-unpack-expr-accesses.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | GLSL | HLSL | WGSL"
3 changes: 0 additions & 3 deletions naga/tests/in/abstract-types-const.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/abstract-types-const.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | GLSL | WGSL"
3 changes: 0 additions & 3 deletions naga/tests/in/abstract-types-function-calls.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/abstract-types-function-calls.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | GLSL | WGSL"
3 changes: 0 additions & 3 deletions naga/tests/in/abstract-types-operators.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/abstract-types-operators.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | GLSL | WGSL"
3 changes: 0 additions & 3 deletions naga/tests/in/abstract-types-return.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/abstract-types-return.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | GLSL | HLSL | WGSL"
3 changes: 0 additions & 3 deletions naga/tests/in/abstract-types-var.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/abstract-types-var.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | GLSL | WGSL"
39 changes: 0 additions & 39 deletions naga/tests/in/access.param.ron

This file was deleted.

34 changes: 34 additions & 0 deletions naga/tests/in/access.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
targets = "SPIRV | METAL | GLSL | HLSL | WGSL | IR | ANALYSIS"

[msl]
fake_missing_bindings = false
lang_version = [1, 2]
spirv_cross_compatibility = false
zero_initialize_workgroup_memory = true

[msl.per_entry_point_map.atomics]
resources = [
{ bind_target = { buffer = 0, mutable = true }, resource_binding = { group = 0, binding = 0 } },
]
sizes_buffer = 24

[msl.per_entry_point_map.foo_frag]
resources = [
{ bind_target = { buffer = 0, mutable = true }, resource_binding = { group = 0, binding = 0 } },
{ bind_target = { buffer = 2, mutable = true }, resource_binding = { group = 0, binding = 2 } },
]
sizes_buffer = 24

[msl.per_entry_point_map.foo_vert]
resources = [
{ bind_target = { buffer = 0, mutable = false }, resource_binding = { group = 0, binding = 0 } },
{ bind_target = { buffer = 1, mutable = false }, resource_binding = { group = 0, binding = 1 } },
{ bind_target = { buffer = 2, mutable = false }, resource_binding = { group = 0, binding = 2 } },
{ bind_target = { buffer = 3, mutable = false }, resource_binding = { group = 0, binding = 3 } },
]
sizes_buffer = 24

[spv]
adjust_coordinate_space = false
debug = true
version = [1, 1]
3 changes: 0 additions & 3 deletions naga/tests/in/array-in-ctor.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/array-in-ctor.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | GLSL | HLSL | WGSL"
3 changes: 0 additions & 3 deletions naga/tests/in/array-in-function-return-type.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/array-in-function-return-type.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | GLSL | HLSL | WGSL"
17 changes: 0 additions & 17 deletions naga/tests/in/atomicCompareExchange-int64.param.ron

This file was deleted.

12 changes: 12 additions & 0 deletions naga/tests/in/atomicCompareExchange-int64.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
god_mode = true
targets = "SPIRV | WGSL"

[hlsl]
fake_missing_bindings = true
push_constants_target = { register = 0, space = 0 }
restrict_indexing = true
special_constants_binding = { register = 0, space = 1 }
zero_initialize_workgroup_memory = true

[spv]
version = [1, 0]
3 changes: 0 additions & 3 deletions naga/tests/in/atomicCompareExchange.param.ron

This file was deleted.

1 change: 1 addition & 0 deletions naga/tests/in/atomicCompareExchange.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
targets = "SPIRV | METAL | WGSL"
Loading

0 comments on commit a8af685

Please sign in to comment.