mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-22 14:55:05 +00: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:
parent
943e321bc6
commit
0e3fbc8166
@ -1,7 +0,0 @@
|
||||
(
|
||||
spv: (
|
||||
version: (1, 0),
|
||||
debug: true,
|
||||
adjust_coordinate_space: true,
|
||||
),
|
||||
)
|
@ -1,4 +1,5 @@
|
||||
(
|
||||
index_bounds_check_policy: ReadZeroSkipWrite,
|
||||
spv: (
|
||||
version: (1, 2),
|
||||
debug: true,
|
||||
|
@ -3,3 +3,14 @@ fn f() {
|
||||
let px = &v.x;
|
||||
*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
|
||||
; Version: 1.2
|
||||
; Generator: rspirv
|
||||
; Bound: 16
|
||||
; Bound: 42
|
||||
OpCapability Shader
|
||||
OpCapability Linkage
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpSource GLSL 450
|
||||
OpName %6 "v"
|
||||
OpName %9 "f"
|
||||
OpMemberName %8 0 "array"
|
||||
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
|
||||
%4 = OpTypeInt 32 1
|
||||
%3 = OpConstant %4 10
|
||||
%5 = OpTypeVector %4 2
|
||||
%7 = OpTypePointer Function %5
|
||||
%10 = OpTypeFunction %2
|
||||
%12 = OpTypePointer Function %4
|
||||
%14 = OpTypeInt 32 0
|
||||
%13 = OpConstant %14 0
|
||||
%9 = OpFunction %2 None %10
|
||||
%8 = OpLabel
|
||||
%6 = OpVariable %7 Function
|
||||
OpBranch %11
|
||||
%11 = OpLabel
|
||||
%15 = OpAccessChain %12 %6 %13
|
||||
OpStore %15 %3
|
||||
%6 = OpTypeInt 32 0
|
||||
%7 = OpTypeRuntimeArray %6
|
||||
%8 = OpTypeStruct %7
|
||||
%9 = OpTypePointer Workgroup %8
|
||||
%11 = OpTypePointer Function %5
|
||||
%14 = OpTypeFunction %2
|
||||
%16 = OpTypePointer Function %4
|
||||
%17 = OpConstant %6 0
|
||||
%24 = OpTypeFunction %6 %9 %4 %6
|
||||
%26 = OpTypePointer Workgroup %7
|
||||
%27 = OpTypePointer Workgroup %6
|
||||
%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
|
||||
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
|
@ -1,3 +1,8 @@
|
||||
[[block]]
|
||||
struct DynamicArray {
|
||||
array1: [[stride(4)]] array<u32>;
|
||||
};
|
||||
|
||||
fn f() {
|
||||
var v: vec2<i32>;
|
||||
|
||||
@ -6,3 +11,9 @@ fn f() {
|
||||
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")]
|
||||
#[allow(unused_variables)]
|
||||
#[test]
|
||||
|
Loading…
Reference in New Issue
Block a user