Skip to content

Commit 71c9d69

Browse files
committed
Merge branch 'naga-wgsl-out-f32-literals-suffix' into prerequisites-naga-wgsl-abstract-operators-unary
2 parents ba71970 + 466d8a3 commit 71c9d69

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+597
-599
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ Passing an owned value `window` to `Surface` will return a `Surface<'static>`. S
161161

162162
- In WGSL output, always include the `i` suffix on `i32` literals. By @jimblandy in [#4863](https://github.com/gfx-rs/wgpu/pull/4863).
163163

164+
- In WGSL output, always include the `f` suffix on `f32` literals. By @jimblandy in [#4869](https://github.com/gfx-rs/wgpu/pull/4869).
165+
164166
### Bug Fixes
165167

166168
#### General

naga/src/back/wgsl/writer.rs

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,25 +1087,21 @@ impl<W: Write> Writer<W> {
10871087
use crate::Expression;
10881088

10891089
match expressions[expr] {
1090-
Expression::Literal(literal) => {
1091-
match literal {
1092-
// Floats are written using `Debug` instead of `Display` because it always appends the
1093-
// decimal part even it's zero
1094-
crate::Literal::F32(value) => write!(self.out, "{:?}", value)?,
1095-
crate::Literal::U32(value) => write!(self.out, "{}u", value)?,
1096-
crate::Literal::I32(value) => write!(self.out, "{}i", value)?,
1097-
crate::Literal::Bool(value) => write!(self.out, "{}", value)?,
1098-
crate::Literal::F64(value) => write!(self.out, "{:?}lf", value)?,
1099-
crate::Literal::I64(_) => {
1100-
return Err(Error::Custom("unsupported i64 literal".to_string()));
1101-
}
1102-
crate::Literal::AbstractInt(_) | crate::Literal::AbstractFloat(_) => {
1103-
return Err(Error::Custom(
1104-
"Abstract types should not appear in IR presented to backends".into(),
1105-
));
1106-
}
1090+
Expression::Literal(literal) => match literal {
1091+
crate::Literal::F32(value) => write!(self.out, "{}f", value)?,
1092+
crate::Literal::U32(value) => write!(self.out, "{}u", value)?,
1093+
crate::Literal::I32(value) => write!(self.out, "{}i", value)?,
1094+
crate::Literal::Bool(value) => write!(self.out, "{}", value)?,
1095+
crate::Literal::F64(value) => write!(self.out, "{:?}lf", value)?,
1096+
crate::Literal::I64(_) => {
1097+
return Err(Error::Custom("unsupported i64 literal".to_string()));
11071098
}
1108-
}
1099+
crate::Literal::AbstractInt(_) | crate::Literal::AbstractFloat(_) => {
1100+
return Err(Error::Custom(
1101+
"Abstract types should not appear in IR presented to backends".into(),
1102+
));
1103+
}
1104+
},
11091105
Expression::Constant(handle) => {
11101106
let constant = &module.constants[handle];
11111107
if constant.name.is_some() {

naga/tests/out/wgsl/210-bevy-2d-shader.vert.wgsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ fn main_1() {
3434
v_Uv = _e10;
3535
let _e11 = Vertex_Position_1;
3636
let _e12 = global_2.size;
37-
position = (_e11 * vec3<f32>(_e12.x, _e12.y, 1.0));
37+
position = (_e11 * vec3<f32>(_e12.x, _e12.y, 1f));
3838
let _e20 = global.ViewProj;
3939
let _e21 = global_1.Model;
4040
let _e23 = position;
41-
gl_Position = ((_e20 * _e21) * vec4<f32>(_e23.x, _e23.y, _e23.z, 1.0));
41+
gl_Position = ((_e20 * _e21) * vec4<f32>(_e23.x, _e23.y, _e23.z, 1f));
4242
return;
4343
}
4444

naga/tests/out/wgsl/210-bevy-shader.vert.wgsl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,18 @@ var<private> gl_Position: vec4<f32>;
2828
fn main_1() {
2929
let _e10 = global_1.Model;
3030
let _e11 = Vertex_Normal_1;
31-
v_Normal = (_e10 * vec4<f32>(_e11.x, _e11.y, _e11.z, 1.0)).xyz;
31+
v_Normal = (_e10 * vec4<f32>(_e11.x, _e11.y, _e11.z, 1f)).xyz;
3232
let _e19 = global_1.Model;
3333
let _e29 = Vertex_Normal_1;
3434
v_Normal = (mat3x3<f32>(_e19[0].xyz, _e19[1].xyz, _e19[2].xyz) * _e29);
3535
let _e31 = global_1.Model;
3636
let _e32 = Vertex_Position_1;
37-
v_Position = (_e31 * vec4<f32>(_e32.x, _e32.y, _e32.z, 1.0)).xyz;
37+
v_Position = (_e31 * vec4<f32>(_e32.x, _e32.y, _e32.z, 1f)).xyz;
3838
let _e40 = Vertex_Uv_1;
3939
v_Uv = _e40;
4040
let _e42 = global.ViewProj;
4141
let _e43 = v_Position;
42-
gl_Position = (_e42 * vec4<f32>(_e43.x, _e43.y, _e43.z, 1.0));
42+
gl_Position = (_e42 * vec4<f32>(_e43.x, _e43.y, _e43.z, 1f));
4343
return;
4444
}
4545

naga/tests/out/wgsl/246-collatz.comp.wgsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ fn collatz_iterations(n: u32) -> u32 {
1919
{
2020
let _e14 = n_1;
2121
let _e15 = f32(_e14);
22-
if ((_e15 - (floor((_e15 / 2.0)) * 2.0)) == 0.0) {
22+
if ((_e15 - (floor((_e15 / 2f)) * 2f)) == 0f) {
2323
{
2424
let _e25 = n_1;
2525
n_1 = (_e25 / 2u);

naga/tests/out/wgsl/277-casting.frag.wgsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
fn main_1() {
2-
var a: f32 = 1.0;
2+
var a: f32 = 1f;
33

44
return;
55
}

naga/tests/out/wgsl/280-matrix-cast.frag.wgsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
fn main_1() {
2-
var a: mat4x4<f32> = mat4x4<f32>(vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 1.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 1.0));
2+
var a: mat4x4<f32> = mat4x4<f32>(vec4<f32>(1f, 0f, 0f, 0f), vec4<f32>(0f, 1f, 0f, 0f), vec4<f32>(0f, 0f, 1f, 0f), vec4<f32>(0f, 0f, 0f, 1f));
33

44
}
55

naga/tests/out/wgsl/800-out-of-bounds-panic.vert.wgsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ fn main_1() {
2525
let _e9 = global.view_matrix;
2626
let _e10 = global_1.world_matrix;
2727
let _e12 = position_1;
28-
gl_Position = ((_e9 * _e10) * vec4<f32>(_e12.x, _e12.y, 0.0, 1.0));
28+
gl_Position = ((_e9 * _e10) * vec4<f32>(_e12.x, _e12.y, 0f, 1f));
2929
let _e20 = gl_Position;
3030
let _e22 = gl_Position;
31-
gl_Position.z = ((_e20.z + _e22.w) / 2.0);
31+
gl_Position.z = ((_e20.z + _e22.w) / 2f);
3232
return;
3333
}
3434

naga/tests/out/wgsl/900-implicit-conversions.frag.wgsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ fn implicit_dims_3(v_6: vec4<f32>) {
5656

5757
fn main_1() {
5858
exact_1(1i);
59-
implicit(1.0);
60-
implicit_dims_2(vec3(1.0));
59+
implicit(1f);
60+
implicit_dims_2(vec3(1f));
6161
return;
6262
}
6363

naga/tests/out/wgsl/901-lhs-field-select.frag.wgsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
fn main_1() {
2-
var a: vec4<f32> = vec4(1.0);
2+
var a: vec4<f32> = vec4(1f);
33

4-
a.x = 2.0;
4+
a.x = 2f;
55
return;
66
}
77

naga/tests/out/wgsl/931-constant-emitting.frag.wgsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const constant: i32 = 10i;
22

33
fn function() -> f32 {
4-
return 0.0;
4+
return 0f;
55
}
66

77
fn main_1() {

naga/tests/out/wgsl/abstract-types-const.wgsl

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,51 +5,51 @@ struct S {
55
}
66

77
const xvupaiai: vec2<u32> = vec2<u32>(42u, 43u);
8-
const xvfpaiai: vec2<f32> = vec2<f32>(44.0, 45.0);
8+
const xvfpaiai: vec2<f32> = vec2<f32>(44f, 45f);
99
const xvupuai: vec2<u32> = vec2<u32>(42u, 43u);
1010
const xvupaiu: vec2<u32> = vec2<u32>(42u, 43u);
1111
const xvuuai: vec2<u32> = vec2<u32>(42u, 43u);
1212
const xvuaiu: vec2<u32> = vec2<u32>(42u, 43u);
13-
const xmfpaiaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
14-
const xmfpafaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
15-
const xmfpaiafaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
16-
const xmfpaiaiafai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
17-
const xmfpaiaiaiaf: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
18-
const imfpaiaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
19-
const imfpafaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
20-
const imfpafafafaf: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
13+
const xmfpaiaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1f, 2f), vec2<f32>(3f, 4f));
14+
const xmfpafaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1f, 2f), vec2<f32>(3f, 4f));
15+
const xmfpaiafaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1f, 2f), vec2<f32>(3f, 4f));
16+
const xmfpaiaiafai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1f, 2f), vec2<f32>(3f, 4f));
17+
const xmfpaiaiaiaf: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1f, 2f), vec2<f32>(3f, 4f));
18+
const imfpaiaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1f, 2f), vec2<f32>(3f, 4f));
19+
const imfpafaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1f, 2f), vec2<f32>(3f, 4f));
20+
const imfpafafafaf: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1f, 2f), vec2<f32>(3f, 4f));
2121
const ivispai: vec2<i32> = vec2(1i);
22-
const ivfspaf: vec2<f32> = vec2(1.0);
22+
const ivfspaf: vec2<f32> = vec2(1f);
2323
const ivis_ai: vec2<i32> = vec2(1i);
2424
const ivus_ai: vec2<u32> = vec2(1u);
25-
const ivfs_ai: vec2<f32> = vec2(1.0);
26-
const ivfs_af: vec2<f32> = vec2(1.0);
27-
const iafafaf: array<f32, 2> = array<f32, 2>(1.0, 2.0);
28-
const iafaiai: array<f32, 2> = array<f32, 2>(1.0, 2.0);
29-
const iafpafaf: array<f32, 2> = array<f32, 2>(1.0, 2.0);
30-
const iafpaiaf: array<f32, 2> = array<f32, 2>(1.0, 2.0);
31-
const iafpafai: array<f32, 2> = array<f32, 2>(1.0, 2.0);
32-
const xafpafaf: array<f32, 2> = array<f32, 2>(1.0, 2.0);
33-
const s_f_i_u: S = S(1.0, 1i, 1u);
34-
const s_f_iai: S = S(1.0, 1i, 1u);
35-
const s_fai_u: S = S(1.0, 1i, 1u);
36-
const s_faiai: S = S(1.0, 1i, 1u);
37-
const saf_i_u: S = S(1.0, 1i, 1u);
38-
const saf_iai: S = S(1.0, 1i, 1u);
39-
const safai_u: S = S(1.0, 1i, 1u);
40-
const safaiai: S = S(1.0, 1i, 1u);
41-
const ivfr_f_f: vec3<f32> = vec3<f32>(vec2<f32>(1.0, 2.0), 3.0);
42-
const ivfr_f_af: vec3<f32> = vec3<f32>(vec2<f32>(1.0, 2.0), 3.0);
43-
const ivfraf_f: vec3<f32> = vec3<f32>(vec2<f32>(1.0, 2.0), 3.0);
44-
const ivfraf_af: vec3<f32> = vec3<f32>(vec2<f32>(1.0, 2.0), 3.0);
45-
const ivf_fr_f: vec3<f32> = vec3<f32>(1.0, vec2<f32>(2.0, 3.0));
46-
const ivf_fraf: vec3<f32> = vec3<f32>(1.0, vec2<f32>(2.0, 3.0));
47-
const ivf_afr_f: vec3<f32> = vec3<f32>(1.0, vec2<f32>(2.0, 3.0));
48-
const ivf_afraf: vec3<f32> = vec3<f32>(1.0, vec2<f32>(2.0, 3.0));
49-
const ivfr_f_ai: vec3<f32> = vec3<f32>(vec2<f32>(1.0, 2.0), 3.0);
50-
const ivfrai_f: vec3<f32> = vec3<f32>(vec2<f32>(1.0, 2.0), 3.0);
51-
const ivfrai_ai: vec3<f32> = vec3<f32>(vec2<f32>(1.0, 2.0), 3.0);
52-
const ivf_frai: vec3<f32> = vec3<f32>(1.0, vec2<f32>(2.0, 3.0));
53-
const ivf_air_f: vec3<f32> = vec3<f32>(1.0, vec2<f32>(2.0, 3.0));
54-
const ivf_airai: vec3<f32> = vec3<f32>(1.0, vec2<f32>(2.0, 3.0));
25+
const ivfs_ai: vec2<f32> = vec2(1f);
26+
const ivfs_af: vec2<f32> = vec2(1f);
27+
const iafafaf: array<f32, 2> = array<f32, 2>(1f, 2f);
28+
const iafaiai: array<f32, 2> = array<f32, 2>(1f, 2f);
29+
const iafpafaf: array<f32, 2> = array<f32, 2>(1f, 2f);
30+
const iafpaiaf: array<f32, 2> = array<f32, 2>(1f, 2f);
31+
const iafpafai: array<f32, 2> = array<f32, 2>(1f, 2f);
32+
const xafpafaf: array<f32, 2> = array<f32, 2>(1f, 2f);
33+
const s_f_i_u: S = S(1f, 1i, 1u);
34+
const s_f_iai: S = S(1f, 1i, 1u);
35+
const s_fai_u: S = S(1f, 1i, 1u);
36+
const s_faiai: S = S(1f, 1i, 1u);
37+
const saf_i_u: S = S(1f, 1i, 1u);
38+
const saf_iai: S = S(1f, 1i, 1u);
39+
const safai_u: S = S(1f, 1i, 1u);
40+
const safaiai: S = S(1f, 1i, 1u);
41+
const ivfr_f_f: vec3<f32> = vec3<f32>(vec2<f32>(1f, 2f), 3f);
42+
const ivfr_f_af: vec3<f32> = vec3<f32>(vec2<f32>(1f, 2f), 3f);
43+
const ivfraf_f: vec3<f32> = vec3<f32>(vec2<f32>(1f, 2f), 3f);
44+
const ivfraf_af: vec3<f32> = vec3<f32>(vec2<f32>(1f, 2f), 3f);
45+
const ivf_fr_f: vec3<f32> = vec3<f32>(1f, vec2<f32>(2f, 3f));
46+
const ivf_fraf: vec3<f32> = vec3<f32>(1f, vec2<f32>(2f, 3f));
47+
const ivf_afr_f: vec3<f32> = vec3<f32>(1f, vec2<f32>(2f, 3f));
48+
const ivf_afraf: vec3<f32> = vec3<f32>(1f, vec2<f32>(2f, 3f));
49+
const ivfr_f_ai: vec3<f32> = vec3<f32>(vec2<f32>(1f, 2f), 3f);
50+
const ivfrai_f: vec3<f32> = vec3<f32>(vec2<f32>(1f, 2f), 3f);
51+
const ivfrai_ai: vec3<f32> = vec3<f32>(vec2<f32>(1f, 2f), 3f);
52+
const ivf_frai: vec3<f32> = vec3<f32>(1f, vec2<f32>(2f, 3f));
53+
const ivf_air_f: vec3<f32> = vec3<f32>(1f, vec2<f32>(2f, 3f));
54+
const ivf_airai: vec3<f32> = vec3<f32>(1f, vec2<f32>(2f, 3f));
5555

naga/tests/out/wgsl/abstract-types-operators.wgsl

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
const plus_fafaf_1: f32 = 3.0;
2-
const plus_fafai_1: f32 = 3.0;
3-
const plus_faf_f_1: f32 = 3.0;
4-
const plus_faiaf_1: f32 = 3.0;
5-
const plus_faiai_1: f32 = 3.0;
6-
const plus_fai_f_1: f32 = 3.0;
7-
const plus_f_faf_1: f32 = 3.0;
8-
const plus_f_fai_1: f32 = 3.0;
9-
const plus_f_f_f_1: f32 = 3.0;
1+
const plus_fafaf_1: f32 = 3f;
2+
const plus_fafai_1: f32 = 3f;
3+
const plus_faf_f_1: f32 = 3f;
4+
const plus_faiaf_1: f32 = 3f;
5+
const plus_faiai_1: f32 = 3f;
6+
const plus_fai_f_1: f32 = 3f;
7+
const plus_f_faf_1: f32 = 3f;
8+
const plus_f_fai_1: f32 = 3f;
9+
const plus_f_f_f_1: f32 = 3f;
1010
const plus_iaiai_1: i32 = 3i;
1111
const plus_iai_i_1: i32 = 3i;
1212
const plus_i_iai_1: i32 = 3i;
@@ -17,14 +17,14 @@ const plus_u_uai_1: u32 = 3u;
1717
const plus_u_u_u_1: u32 = 3u;
1818

1919
fn runtime_values() {
20-
var f: f32 = 42.0;
20+
var f: f32 = 42f;
2121
var i: i32 = 43i;
2222
var u: u32 = 44u;
23-
var plus_fafaf: f32 = 3.0;
24-
var plus_fafai: f32 = 3.0;
23+
var plus_fafaf: f32 = 3f;
24+
var plus_fafai: f32 = 3f;
2525
var plus_faf_f: f32;
26-
var plus_faiaf: f32 = 3.0;
27-
var plus_faiai: f32 = 3.0;
26+
var plus_faiaf: f32 = 3f;
27+
var plus_faiai: f32 = 3f;
2828
var plus_fai_f: f32;
2929
var plus_f_faf: f32;
3030
var plus_f_fai: f32;
@@ -39,13 +39,13 @@ fn runtime_values() {
3939
var plus_u_u_u: u32;
4040

4141
let _e8 = f;
42-
plus_faf_f = (1.0 + _e8);
42+
plus_faf_f = (1f + _e8);
4343
let _e14 = f;
44-
plus_fai_f = (1.0 + _e14);
44+
plus_fai_f = (1f + _e14);
4545
let _e18 = f;
46-
plus_f_faf = (_e18 + 2.0);
46+
plus_f_faf = (_e18 + 2f);
4747
let _e22 = f;
48-
plus_f_fai = (_e22 + 2.0);
48+
plus_f_fai = (_e22 + 2f);
4949
let _e26 = f;
5050
let _e27 = f;
5151
plus_f_f_f = (_e26 + _e27);

0 commit comments

Comments
 (0)