Skip to content

Commit 1a346ec

Browse files
committed
Improve Snapshot Test Configuration Deserialization
1 parent 4e139ed commit 1a346ec

File tree

5 files changed

+26
-27
lines changed

5 files changed

+26
-27
lines changed

Diff for: naga/src/back/glsl/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ bitflags::bitflags! {
258258
#[derive(Debug, Clone)]
259259
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
260260
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
261+
#[cfg_attr(feature = "deserialize", serde(default))]
261262
pub struct Options {
262263
/// The GLSL version to be used.
263264
pub version: Version,

Diff for: naga/src/back/hlsl/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ pub enum EntryPointError {
193193
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
194194
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
195195
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
196+
#[cfg_attr(feature = "deserialize", serde(default))]
196197
pub struct Options {
197198
/// The hlsl shader model to be used
198199
pub shader_model: ShaderModel,

Diff for: naga/src/back/msl/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ enum LocationMode {
195195
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
196196
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
197197
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
198+
#[cfg_attr(feature = "deserialize", serde(default))]
198199
pub struct Options {
199200
/// (Major, Minor) target version of the Metal Shading Language.
200201
pub lang_version: (u8, u8),
@@ -207,7 +208,6 @@ pub struct Options {
207208
/// Don't panic on missing bindings, instead generate invalid MSL.
208209
pub fake_missing_bindings: bool,
209210
/// Bounds checking policies.
210-
#[cfg_attr(feature = "deserialize", serde(default))]
211211
pub bounds_check_policies: index::BoundsCheckPolicies,
212212
/// Should workgroup variables be zero initialized (by polyfilling)?
213213
pub zero_initialize_workgroup_memory: bool,
@@ -341,6 +341,7 @@ pub struct VertexBufferMapping {
341341
#[derive(Debug, Default, Clone)]
342342
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
343343
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
344+
#[cfg_attr(feature = "deserialize", serde(default))]
344345
pub struct PipelineOptions {
345346
/// Allow `BuiltIn::PointSize` and inject it if doesn't exist.
346347
///

Diff for: naga/src/proc/index.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ pub enum BoundsCheckPolicy {
6464
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
6565
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
6666
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
67+
#[cfg_attr(feature = "deserialize", serde(default))]
6768
pub struct BoundsCheckPolicies {
6869
/// How should the generated code handle array, vector, or matrix indices
6970
/// that are out of range?
70-
#[cfg_attr(feature = "deserialize", serde(default))]
7171
pub index: BoundsCheckPolicy,
7272

7373
/// How should the generated code handle array, vector, or matrix indices
@@ -103,7 +103,6 @@ pub struct BoundsCheckPolicies {
103103
/// [`AccessIndex`]: crate::Expression::AccessIndex
104104
/// [`Storage`]: crate::AddressSpace::Storage
105105
/// [`Uniform`]: crate::AddressSpace::Uniform
106-
#[cfg_attr(feature = "deserialize", serde(default))]
107106
pub buffer: BoundsCheckPolicy,
108107

109108
/// How should the generated code handle image texel loads that are out
@@ -119,11 +118,9 @@ pub struct BoundsCheckPolicies {
119118
/// [`ImageLoad`]: crate::Expression::ImageLoad
120119
/// [`ImageStore`]: crate::Statement::ImageStore
121120
/// [`ReadZeroSkipWrite`]: BoundsCheckPolicy::ReadZeroSkipWrite
122-
#[cfg_attr(feature = "deserialize", serde(default))]
123121
pub image_load: BoundsCheckPolicy,
124122

125123
/// How should the generated code handle binding array indexes that are out of bounds.
126-
#[cfg_attr(feature = "deserialize", serde(default))]
127124
pub binding_array: BoundsCheckPolicy,
128125
}
129126

Diff for: naga/tests/snapshots.rs

+21-22
Original file line numberDiff line numberDiff line change
@@ -39,61 +39,60 @@ impl Default for SpvOutVersion {
3939
}
4040

4141
#[derive(Default, serde::Deserialize)]
42+
#[serde(default)]
4243
struct SpirvOutParameters {
4344
version: SpvOutVersion,
44-
#[serde(default)]
4545
capabilities: naga::FastHashSet<spirv::Capability>,
46-
#[serde(default)]
4746
debug: bool,
48-
#[serde(default)]
4947
adjust_coordinate_space: bool,
50-
#[serde(default)]
5148
force_point_size: bool,
52-
#[serde(default)]
5349
clamp_frag_depth: bool,
54-
#[serde(default)]
5550
separate_entry_points: bool,
56-
#[serde(default)]
5751
#[cfg(all(feature = "deserialize", spv_out))]
5852
binding_map: naga::back::spv::BindingMap,
5953
}
6054

6155
#[derive(Default, serde::Deserialize)]
56+
#[serde(default)]
6257
struct WgslOutParameters {
63-
#[serde(default)]
6458
explicit_types: bool,
6559
}
6660

6761
#[derive(Default, serde::Deserialize)]
62+
#[serde(default)]
6863
struct Parameters {
69-
#[serde(default)]
64+
// -- GOD MODE --
7065
god_mode: bool,
71-
#[cfg(feature = "deserialize")]
72-
#[serde(default)]
73-
bounds_check_policies: naga::proc::BoundsCheckPolicies,
74-
#[serde(default)]
66+
67+
// -- SPIR-V options --
7568
spv: SpirvOutParameters,
69+
70+
// -- MSL options --
7671
#[cfg(all(feature = "deserialize", msl_out))]
77-
#[serde(default)]
7872
msl: naga::back::msl::Options,
7973
#[cfg(all(feature = "deserialize", msl_out))]
8074
#[serde(default)]
8175
msl_pipeline: naga::back::msl::PipelineOptions,
76+
77+
// -- GLSL options --
8278
#[cfg(all(feature = "deserialize", glsl_out))]
83-
#[serde(default)]
8479
glsl: naga::back::glsl::Options,
85-
#[serde(default)]
8680
glsl_exclude_list: naga::FastHashSet<String>,
81+
#[cfg(all(feature = "deserialize", glsl_out))]
82+
glsl_multiview: Option<std::num::NonZeroU32>,
83+
84+
// -- HLSL options --
8785
#[cfg(all(feature = "deserialize", hlsl_out))]
88-
#[serde(default)]
8986
hlsl: naga::back::hlsl::Options,
90-
#[serde(default)]
87+
88+
// -- WGSL options --
9189
wgsl: WgslOutParameters,
92-
#[cfg(all(feature = "deserialize", glsl_out))]
93-
#[serde(default)]
94-
glsl_multiview: Option<std::num::NonZeroU32>,
90+
91+
// -- General options --
92+
#[cfg(feature = "deserialize")]
93+
bounds_check_policies: naga::proc::BoundsCheckPolicies,
94+
9595
#[cfg(all(feature = "deserialize", any(hlsl_out, msl_out, spv_out, glsl_out)))]
96-
#[serde(default)]
9796
pipeline_constants: naga::back::PipelineConstants,
9897
}
9998

0 commit comments

Comments
 (0)