Skip to content

Commit 4a29e2d

Browse files
committed
[naga] Make external texture snapshot test call textureLoad() with both vec2<i32> and vec2<i32> coordinates
The HLSL external texture implementation didn't have to do anything in particular to handle both coordinate types, as int2 automatically gets promoted to uint2. But in MSL this is not the case, and it is therefore important to test that we correctly handle both coordinate types.
1 parent 63826ed commit 4a29e2d

File tree

5 files changed

+127
-50
lines changed

5 files changed

+127
-50
lines changed

naga/tests/in/wgsl/texture-external.wgsl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ var samp: sampler;
55

66
fn test(t: texture_external) -> vec4<f32> {
77
var a = textureSampleBaseClampToEdge(t, samp, vec2(0.0f));
8-
var b = textureLoad(t, vec2(0u));
9-
var c = textureDimensions(t);
8+
var b = textureLoad(t, vec2(0i));
9+
var c = textureLoad(t, vec2(0u));
10+
var d = textureDimensions(t);
1011

11-
return a + b + vec2f(c).xyxy;
12+
return a + b + c + vec2f(d).xyxy;
1213
}
1314

1415
@fragment

naga/tests/out/hlsl/wgsl-texture-external.hlsl

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -137,17 +137,21 @@ float4 test(Texture2D<float4> t_plane0_, Texture2D<float4> t_plane1_, Texture2D<
137137
{
138138
float4 a = (float4)0;
139139
float4 b = (float4)0;
140-
uint2 c = (uint2)0;
140+
float4 c = (float4)0;
141+
uint2 d = (uint2)0;
141142

142143
float4 _e4 = nagaTextureSampleBaseClampToEdge(t_plane0_, t_plane1_, t_plane2_, t_params, samp, (0.0).xx);
143144
a = _e4;
144-
float4 _e8 = nagaTextureLoadExternal(t_plane0_, t_plane1_, t_plane2_, t_params, (0u).xx);
145+
float4 _e8 = nagaTextureLoadExternal(t_plane0_, t_plane1_, t_plane2_, t_params, (int(0)).xx);
145146
b = _e8;
146-
c = NagaExternalDimensions2D(t_plane0_, t_plane1_, t_plane2_, t_params);
147-
float4 _e12 = a;
148-
float4 _e13 = b;
149-
uint2 _e15 = c;
150-
return ((_e12 + _e13) + float2(_e15).xyxy);
147+
float4 _e12 = nagaTextureLoadExternal(t_plane0_, t_plane1_, t_plane2_, t_params, (0u).xx);
148+
c = _e12;
149+
d = NagaExternalDimensions2D(t_plane0_, t_plane1_, t_plane2_, t_params);
150+
float4 _e16 = a;
151+
float4 _e17 = b;
152+
float4 _e19 = c;
153+
uint2 _e21 = d;
154+
return (((_e16 + _e17) + _e19) + float2(_e21).xyxy);
151155
}
152156

153157
float4 fragment_main() : SV_Target0

naga/tests/out/ir/wgsl-texture-external.compact.ron

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,11 @@
230230
),
231231
(
232232
name: Some("c"),
233+
ty: 10,
234+
init: None,
235+
),
236+
(
237+
name: Some("d"),
233238
ty: 2,
234239
init: None,
235240
),
@@ -254,7 +259,7 @@
254259
clamp_to_edge: true,
255260
),
256261
LocalVariable(0),
257-
Literal(U32(0)),
262+
Literal(I32(0)),
258263
Splat(
259264
size: Bi,
260265
value: 6,
@@ -267,13 +272,26 @@
267272
level: None,
268273
),
269274
LocalVariable(1),
275+
Literal(U32(0)),
276+
Splat(
277+
size: Bi,
278+
value: 10,
279+
),
280+
ImageLoad(
281+
image: 0,
282+
coordinate: 11,
283+
array_index: None,
284+
sample: None,
285+
level: None,
286+
),
287+
LocalVariable(2),
270288
ImageQuery(
271289
image: 0,
272290
query: Size(
273291
level: None,
274292
),
275293
),
276-
LocalVariable(2),
294+
LocalVariable(3),
277295
Load(
278296
pointer: 5,
279297
),
@@ -282,26 +300,34 @@
282300
),
283301
Binary(
284302
op: Add,
285-
left: 12,
286-
right: 13,
303+
left: 16,
304+
right: 17,
287305
),
288306
Load(
289-
pointer: 11,
307+
pointer: 13,
308+
),
309+
Binary(
310+
op: Add,
311+
left: 18,
312+
right: 19,
313+
),
314+
Load(
315+
pointer: 15,
290316
),
291317
As(
292-
expr: 15,
318+
expr: 21,
293319
kind: Float,
294320
convert: Some(4),
295321
),
296322
Swizzle(
297323
size: Quad,
298-
vector: 16,
324+
vector: 22,
299325
pattern: (X, Y, X, Y),
300326
),
301327
Binary(
302328
op: Add,
303-
left: 14,
304-
right: 17,
329+
left: 20,
330+
right: 23,
305331
),
306332
],
307333
named_expressions: {
@@ -325,19 +351,27 @@
325351
value: 8,
326352
),
327353
Emit((
328-
start: 10,
329-
end: 11,
354+
start: 11,
355+
end: 13,
330356
)),
331357
Store(
332-
pointer: 11,
333-
value: 10,
358+
pointer: 13,
359+
value: 12,
360+
),
361+
Emit((
362+
start: 14,
363+
end: 15,
364+
)),
365+
Store(
366+
pointer: 15,
367+
value: 14,
334368
),
335369
Emit((
336-
start: 12,
337-
end: 19,
370+
start: 16,
371+
end: 25,
338372
)),
339373
Return(
340-
value: Some(18),
374+
value: Some(24),
341375
),
342376
],
343377
diagnostic_filter_leaf: None,

naga/tests/out/ir/wgsl-texture-external.ron

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,11 @@
230230
),
231231
(
232232
name: Some("c"),
233+
ty: 10,
234+
init: None,
235+
),
236+
(
237+
name: Some("d"),
233238
ty: 2,
234239
init: None,
235240
),
@@ -254,7 +259,7 @@
254259
clamp_to_edge: true,
255260
),
256261
LocalVariable(0),
257-
Literal(U32(0)),
262+
Literal(I32(0)),
258263
Splat(
259264
size: Bi,
260265
value: 6,
@@ -267,13 +272,26 @@
267272
level: None,
268273
),
269274
LocalVariable(1),
275+
Literal(U32(0)),
276+
Splat(
277+
size: Bi,
278+
value: 10,
279+
),
280+
ImageLoad(
281+
image: 0,
282+
coordinate: 11,
283+
array_index: None,
284+
sample: None,
285+
level: None,
286+
),
287+
LocalVariable(2),
270288
ImageQuery(
271289
image: 0,
272290
query: Size(
273291
level: None,
274292
),
275293
),
276-
LocalVariable(2),
294+
LocalVariable(3),
277295
Load(
278296
pointer: 5,
279297
),
@@ -282,26 +300,34 @@
282300
),
283301
Binary(
284302
op: Add,
285-
left: 12,
286-
right: 13,
303+
left: 16,
304+
right: 17,
287305
),
288306
Load(
289-
pointer: 11,
307+
pointer: 13,
308+
),
309+
Binary(
310+
op: Add,
311+
left: 18,
312+
right: 19,
313+
),
314+
Load(
315+
pointer: 15,
290316
),
291317
As(
292-
expr: 15,
318+
expr: 21,
293319
kind: Float,
294320
convert: Some(4),
295321
),
296322
Swizzle(
297323
size: Quad,
298-
vector: 16,
324+
vector: 22,
299325
pattern: (X, Y, X, Y),
300326
),
301327
Binary(
302328
op: Add,
303-
left: 14,
304-
right: 17,
329+
left: 20,
330+
right: 23,
305331
),
306332
],
307333
named_expressions: {
@@ -325,19 +351,27 @@
325351
value: 8,
326352
),
327353
Emit((
328-
start: 10,
329-
end: 11,
354+
start: 11,
355+
end: 13,
330356
)),
331357
Store(
332-
pointer: 11,
333-
value: 10,
358+
pointer: 13,
359+
value: 12,
360+
),
361+
Emit((
362+
start: 14,
363+
end: 15,
364+
)),
365+
Store(
366+
pointer: 15,
367+
value: 14,
334368
),
335369
Emit((
336-
start: 12,
337-
end: 19,
370+
start: 16,
371+
end: 25,
338372
)),
339373
Return(
340-
value: Some(18),
374+
value: Some(24),
341375
),
342376
],
343377
diagnostic_filter_leaf: None,

naga/tests/out/wgsl/wgsl-texture-external.wgsl

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,22 @@ var samp: sampler;
66
fn test(t: texture_external) -> vec4<f32> {
77
var a: vec4<f32>;
88
var b: vec4<f32>;
9-
var c: vec2<u32>;
9+
var c: vec4<f32>;
10+
var d: vec2<u32>;
1011

1112
let _e4 = textureSampleBaseClampToEdge(t, samp, vec2(0f));
1213
a = _e4;
13-
let _e8 = textureLoad(t, vec2(0u));
14+
let _e8 = textureLoad(t, vec2(0i));
1415
b = _e8;
15-
let _e10 = textureDimensions(t);
16-
c = _e10;
17-
let _e12 = a;
18-
let _e13 = b;
19-
let _e15 = c;
20-
return ((_e12 + _e13) + vec2<f32>(_e15).xyxy);
16+
let _e12 = textureLoad(t, vec2(0u));
17+
c = _e12;
18+
let _e14 = textureDimensions(t);
19+
d = _e14;
20+
let _e16 = a;
21+
let _e17 = b;
22+
let _e19 = c;
23+
let _e21 = d;
24+
return (((_e16 + _e17) + _e19) + vec2<f32>(_e21).xyxy);
2125
}
2226

2327
@fragment

0 commit comments

Comments
 (0)