mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
Replace pointer-access.spv snapshot test with WGSL source. (#1450)
The original pointer access test used SPIR-V for its input because WGSL didn't have a working pointer indirection operator at the time. Now that it does, we can just write this test in WGSL directly. Fixes #1432.
This commit is contained in:
@@ -1,7 +0,0 @@
|
|||||||
(
|
|
||||||
spv: (
|
|
||||||
version: (1, 0),
|
|
||||||
debug: true,
|
|
||||||
adjust_coordinate_space: true,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
(
|
(
|
||||||
|
index_bounds_check_policy: ReadZeroSkipWrite,
|
||||||
spv: (
|
spv: (
|
||||||
version: (1, 2),
|
version: (1, 2),
|
||||||
debug: true,
|
debug: true,
|
||||||
|
|||||||
@@ -3,3 +3,14 @@ fn f() {
|
|||||||
let px = &v.x;
|
let px = &v.x;
|
||||||
*px = 10;
|
*px = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[block]]
|
||||||
|
struct DynamicArray {
|
||||||
|
array: array<u32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
fn index_dynamic_array(p: ptr<workgroup, DynamicArray>, i: i32, v: u32) -> u32 {
|
||||||
|
let old = (*p).array[i];
|
||||||
|
(*p).array[i] = v;
|
||||||
|
return old;
|
||||||
|
}
|
||||||
|
|||||||
Binary file not shown.
@@ -1,29 +1,71 @@
|
|||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.2
|
; Version: 1.2
|
||||||
; Generator: rspirv
|
; Generator: rspirv
|
||||||
; Bound: 16
|
; Bound: 42
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
OpCapability Linkage
|
OpCapability Linkage
|
||||||
%1 = OpExtInstImport "GLSL.std.450"
|
%1 = OpExtInstImport "GLSL.std.450"
|
||||||
OpMemoryModel Logical GLSL450
|
OpMemoryModel Logical GLSL450
|
||||||
OpSource GLSL 450
|
OpSource GLSL 450
|
||||||
OpName %6 "v"
|
OpMemberName %8 0 "array"
|
||||||
OpName %9 "f"
|
OpName %8 "DynamicArray"
|
||||||
|
OpName %10 "v"
|
||||||
|
OpName %13 "f"
|
||||||
|
OpName %23 "index_dynamic_array"
|
||||||
|
OpDecorate %7 ArrayStride 4
|
||||||
|
OpDecorate %8 Block
|
||||||
|
OpMemberDecorate %8 0 Offset 0
|
||||||
%2 = OpTypeVoid
|
%2 = OpTypeVoid
|
||||||
%4 = OpTypeInt 32 1
|
%4 = OpTypeInt 32 1
|
||||||
%3 = OpConstant %4 10
|
%3 = OpConstant %4 10
|
||||||
%5 = OpTypeVector %4 2
|
%5 = OpTypeVector %4 2
|
||||||
%7 = OpTypePointer Function %5
|
%6 = OpTypeInt 32 0
|
||||||
%10 = OpTypeFunction %2
|
%7 = OpTypeRuntimeArray %6
|
||||||
%12 = OpTypePointer Function %4
|
%8 = OpTypeStruct %7
|
||||||
%14 = OpTypeInt 32 0
|
%9 = OpTypePointer Workgroup %8
|
||||||
%13 = OpConstant %14 0
|
%11 = OpTypePointer Function %5
|
||||||
%9 = OpFunction %2 None %10
|
%14 = OpTypeFunction %2
|
||||||
%8 = OpLabel
|
%16 = OpTypePointer Function %4
|
||||||
%6 = OpVariable %7 Function
|
%17 = OpConstant %6 0
|
||||||
OpBranch %11
|
%24 = OpTypeFunction %6 %9 %4 %6
|
||||||
%11 = OpLabel
|
%26 = OpTypePointer Workgroup %7
|
||||||
%15 = OpAccessChain %12 %6 %13
|
%27 = OpTypePointer Workgroup %6
|
||||||
OpStore %15 %3
|
%30 = OpTypeBool
|
||||||
|
%32 = OpConstantNull %6
|
||||||
|
%13 = OpFunction %2 None %14
|
||||||
|
%12 = OpLabel
|
||||||
|
%10 = OpVariable %11 Function
|
||||||
|
OpBranch %15
|
||||||
|
%15 = OpLabel
|
||||||
|
%18 = OpAccessChain %16 %10 %17
|
||||||
|
OpStore %18 %3
|
||||||
OpReturn
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%23 = OpFunction %6 None %24
|
||||||
|
%20 = OpFunctionParameter %9
|
||||||
|
%21 = OpFunctionParameter %4
|
||||||
|
%22 = OpFunctionParameter %6
|
||||||
|
%19 = OpLabel
|
||||||
|
OpBranch %25
|
||||||
|
%25 = OpLabel
|
||||||
|
%28 = OpArrayLength %6 %20 0
|
||||||
|
%29 = OpULessThan %30 %21 %28
|
||||||
|
OpSelectionMerge %33 None
|
||||||
|
OpBranchConditional %29 %34 %33
|
||||||
|
%34 = OpLabel
|
||||||
|
%31 = OpAccessChain %27 %20 %17 %21
|
||||||
|
%35 = OpLoad %6 %31
|
||||||
|
OpBranch %33
|
||||||
|
%33 = OpLabel
|
||||||
|
%36 = OpPhi %6 %32 %25 %35 %34
|
||||||
|
%37 = OpArrayLength %6 %20 0
|
||||||
|
%38 = OpULessThan %30 %21 %37
|
||||||
|
OpSelectionMerge %40 None
|
||||||
|
OpBranchConditional %38 %41 %40
|
||||||
|
%41 = OpLabel
|
||||||
|
%39 = OpAccessChain %27 %20 %17 %21
|
||||||
|
OpStore %39 %22
|
||||||
|
OpBranch %40
|
||||||
|
%40 = OpLabel
|
||||||
|
OpReturnValue %36
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
[[block]]
|
||||||
|
struct DynamicArray {
|
||||||
|
array1: [[stride(4)]] array<u32>;
|
||||||
|
};
|
||||||
|
|
||||||
fn f() {
|
fn f() {
|
||||||
var v: vec2<i32>;
|
var v: vec2<i32>;
|
||||||
|
|
||||||
@@ -6,3 +11,9 @@ fn f() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn index_dynamic_array(p: ptr<workgroup, DynamicArray>, i: i32, v1: u32) -> u32 {
|
||||||
|
let old: u32 = (*p).array1[i];
|
||||||
|
(*p).array1[i] = v1;
|
||||||
|
return old;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -598,12 +598,6 @@ fn convert_spv_inverse_hyperbolic_trig_functions() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(feature = "spv-in", feature = "spv-out"))]
|
|
||||||
//#[test] //TODO: https://github.com/gfx-rs/naga/issues/1432
|
|
||||||
fn _convert_spv_pointer_access() {
|
|
||||||
convert_spv("pointer-access", true, Targets::SPIRV);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "glsl-in")]
|
#[cfg(feature = "glsl-in")]
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user