[naga wgsl-in] Matrix constructors have only float overloads.

This commit is contained in:
Jim Blandy
2023-11-27 18:17:38 -08:00
committed by Teodor Tanasoaia
parent 85dd4048df
commit fe4d412aea
4 changed files with 14 additions and 0 deletions

View File

@@ -346,6 +346,10 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
automatic_conversion_consensus(&components, ctx).map_err(|index| {
Error::InvalidConstructorComponentType(spans[index], index as i32)
})?;
// We actually only accept floating-point elements.
let consensus_scalar = consensus_scalar
.automatic_conversion_combine(crate::Scalar::ABSTRACT_FLOAT)
.unwrap_or(consensus_scalar);
ctx.convert_slice_to_common_scalar(&mut components, consensus_scalar)?;
let vec_ty = ctx.ensure_type_exists(consensus_scalar.to_inner_vector(rows));

View File

@@ -27,6 +27,10 @@ const xmfpaiafaiai: mat2x2<f32> = mat2x2(1, 2.0, 3, 4);
const xmfpaiaiafai: mat2x2<f32> = mat2x2(1, 2, 3.0, 4);
const xmfpaiaiaiaf: mat2x2<f32> = mat2x2(1, 2, 3, 4.0);
const imfpaiaiaiai = mat2x2(1, 2, 3, 4);
const imfpafaiaiai = mat2x2(1.0, 2, 3, 4);
const imfpafafafaf = mat2x2(1.0, 2.0, 3.0, 4.0);
const ivispai = vec2(1);
const ivfspaf = vec2(1.0);
const ivis_ai = vec2<i32>(1);

View File

@@ -23,6 +23,9 @@ constant metal::float2x2 xmfpafaiaiai = metal::float2x2(metal::float2(1.0, 2.0),
constant metal::float2x2 xmfpaiafaiai = metal::float2x2(metal::float2(1.0, 2.0), metal::float2(3.0, 4.0));
constant metal::float2x2 xmfpaiaiafai = metal::float2x2(metal::float2(1.0, 2.0), metal::float2(3.0, 4.0));
constant metal::float2x2 xmfpaiaiaiaf = metal::float2x2(metal::float2(1.0, 2.0), metal::float2(3.0, 4.0));
constant metal::float2x2 imfpaiaiaiai = metal::float2x2(metal::float2(1.0, 2.0), metal::float2(3.0, 4.0));
constant metal::float2x2 imfpafaiaiai = metal::float2x2(metal::float2(1.0, 2.0), metal::float2(3.0, 4.0));
constant metal::float2x2 imfpafafafaf = metal::float2x2(metal::float2(1.0, 2.0), metal::float2(3.0, 4.0));
constant metal::int2 ivispai = metal::int2(1);
constant metal::float2 ivfspaf = metal::float2(1.0);
constant metal::int2 ivis_ai = metal::int2(1);

View File

@@ -15,6 +15,9 @@ const xmfpafaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0
const xmfpaiafaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
const xmfpaiaiafai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
const xmfpaiaiaiaf: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
const imfpaiaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
const imfpafaiaiai: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
const imfpafafafaf: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
const ivispai: vec2<i32> = vec2(1);
const ivfspaf: vec2<f32> = vec2(1.0);
const ivis_ai: vec2<i32> = vec2(1);