mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-21 22:33:49 +00:00
test: add regr. cvg. for conflicting idents. in shader I/O and locals
This commit is contained in:
parent
e711a35998
commit
2302b5fac6
16
naga/tests/in/6438-conflicting-idents.wgsl
Normal file
16
naga/tests/in/6438-conflicting-idents.wgsl
Normal file
@ -0,0 +1,16 @@
|
||||
struct OurVertexShaderOutput {
|
||||
@builtin(position) position: vec4f,
|
||||
@location(0) texcoord: vec2f,
|
||||
};
|
||||
|
||||
@vertex fn vs(
|
||||
@location(0) xy: vec2f
|
||||
) -> OurVertexShaderOutput {
|
||||
var vsOutput: OurVertexShaderOutput;
|
||||
vsOutput.position = vec4f(xy, 0.0, 1.0);
|
||||
return vsOutput;
|
||||
}
|
||||
|
||||
@fragment fn fs() -> @location(0) vec4f {
|
||||
return vec4f(1.0, 0.0, 0.0, 1.0);
|
||||
}
|
16
naga/tests/out/glsl/6438-conflicting-idents.fs.Fragment.glsl
Normal file
16
naga/tests/out/glsl/6438-conflicting-idents.fs.Fragment.glsl
Normal file
@ -0,0 +1,16 @@
|
||||
#version 310 es
|
||||
|
||||
precision highp float;
|
||||
precision highp int;
|
||||
|
||||
struct OurVertexShaderOutput {
|
||||
vec4 position;
|
||||
vec2 texcoord;
|
||||
};
|
||||
layout(location = 0) out vec4 _fs2p_location0;
|
||||
|
||||
void main() {
|
||||
_fs2p_location0 = vec4(1.0, 0.0, 0.0, 1.0);
|
||||
return;
|
||||
}
|
||||
|
23
naga/tests/out/glsl/6438-conflicting-idents.vs.Vertex.glsl
Normal file
23
naga/tests/out/glsl/6438-conflicting-idents.vs.Vertex.glsl
Normal file
@ -0,0 +1,23 @@
|
||||
#version 310 es
|
||||
|
||||
precision highp float;
|
||||
precision highp int;
|
||||
|
||||
struct OurVertexShaderOutput {
|
||||
vec4 position;
|
||||
vec2 texcoord;
|
||||
};
|
||||
layout(location = 0) in vec2 _p2vs_location0;
|
||||
layout(location = 0) smooth out vec2 _vs2fs_location0;
|
||||
|
||||
void main() {
|
||||
vec2 xy = _p2vs_location0;
|
||||
OurVertexShaderOutput vsOutput = OurVertexShaderOutput(vec4(0.0), vec2(0.0));
|
||||
vsOutput.position = vec4(xy, 0.0, 1.0);
|
||||
OurVertexShaderOutput _e6 = vsOutput;
|
||||
gl_Position = _e6.position;
|
||||
_vs2fs_location0 = _e6.texcoord;
|
||||
gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w);
|
||||
return;
|
||||
}
|
||||
|
25
naga/tests/out/hlsl/6438-conflicting-idents.hlsl
Normal file
25
naga/tests/out/hlsl/6438-conflicting-idents.hlsl
Normal file
@ -0,0 +1,25 @@
|
||||
struct OurVertexShaderOutput {
|
||||
float4 position : SV_Position;
|
||||
float2 texcoord : LOC0;
|
||||
};
|
||||
|
||||
struct VertexOutput_vs {
|
||||
float2 texcoord : LOC0;
|
||||
float4 position : SV_Position;
|
||||
};
|
||||
|
||||
VertexOutput_vs vs(float2 xy : LOC0)
|
||||
{
|
||||
OurVertexShaderOutput vsOutput = (OurVertexShaderOutput)0;
|
||||
|
||||
vsOutput.position = float4(xy, 0.0, 1.0);
|
||||
OurVertexShaderOutput _e6 = vsOutput;
|
||||
const OurVertexShaderOutput ourvertexshaderoutput = _e6;
|
||||
const VertexOutput_vs ourvertexshaderoutput_1 = { ourvertexshaderoutput.texcoord, ourvertexshaderoutput.position };
|
||||
return ourvertexshaderoutput_1;
|
||||
}
|
||||
|
||||
float4 fs() : SV_Target0
|
||||
{
|
||||
return float4(1.0, 0.0, 0.0, 1.0);
|
||||
}
|
16
naga/tests/out/hlsl/6438-conflicting-idents.ron
Normal file
16
naga/tests/out/hlsl/6438-conflicting-idents.ron
Normal file
@ -0,0 +1,16 @@
|
||||
(
|
||||
vertex:[
|
||||
(
|
||||
entry_point:"vs",
|
||||
target_profile:"vs_5_1",
|
||||
),
|
||||
],
|
||||
fragment:[
|
||||
(
|
||||
entry_point:"fs",
|
||||
target_profile:"ps_5_1",
|
||||
),
|
||||
],
|
||||
compute:[
|
||||
],
|
||||
)
|
37
naga/tests/out/msl/6438-conflicting-idents.msl
Normal file
37
naga/tests/out/msl/6438-conflicting-idents.msl
Normal file
@ -0,0 +1,37 @@
|
||||
// language: metal1.0
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using metal::uint;
|
||||
|
||||
struct OurVertexShaderOutput {
|
||||
metal::float4 position;
|
||||
metal::float2 texcoord;
|
||||
};
|
||||
|
||||
struct vsInput {
|
||||
metal::float2 xy [[attribute(0)]];
|
||||
};
|
||||
struct vsOutput {
|
||||
metal::float4 position [[position]];
|
||||
metal::float2 texcoord [[user(loc0), center_perspective]];
|
||||
};
|
||||
vertex vsOutput vs(
|
||||
vsInput varyings [[stage_in]]
|
||||
) {
|
||||
const auto xy = varyings.xy;
|
||||
OurVertexShaderOutput vsOutput = {};
|
||||
vsOutput.position = metal::float4(xy, 0.0, 1.0);
|
||||
OurVertexShaderOutput _e6 = vsOutput;
|
||||
const auto _tmp = _e6;
|
||||
return vsOutput { _tmp.position, _tmp.texcoord };
|
||||
}
|
||||
|
||||
|
||||
struct fsOutput {
|
||||
metal::float4 member_1 [[color(0)]];
|
||||
};
|
||||
fragment fsOutput fs(
|
||||
) {
|
||||
return fsOutput { metal::float4(1.0, 0.0, 0.0, 1.0) };
|
||||
}
|
60
naga/tests/out/spv/6438-conflicting-idents.spvasm
Normal file
60
naga/tests/out/spv/6438-conflicting-idents.spvasm
Normal file
@ -0,0 +1,60 @@
|
||||
; SPIR-V
|
||||
; Version: 1.1
|
||||
; Generator: rspirv
|
||||
; Bound: 36
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint Vertex %15 "vs" %8 %11 %13
|
||||
OpEntryPoint Fragment %33 "fs" %32
|
||||
OpExecutionMode %33 OriginUpperLeft
|
||||
OpMemberDecorate %6 0 Offset 0
|
||||
OpMemberDecorate %6 1 Offset 16
|
||||
OpDecorate %8 Location 0
|
||||
OpDecorate %11 BuiltIn Position
|
||||
OpDecorate %13 Location 0
|
||||
OpDecorate %32 Location 0
|
||||
%2 = OpTypeVoid
|
||||
%4 = OpTypeFloat 32
|
||||
%3 = OpTypeVector %4 4
|
||||
%5 = OpTypeVector %4 2
|
||||
%6 = OpTypeStruct %3 %5
|
||||
%9 = OpTypePointer Input %5
|
||||
%8 = OpVariable %9 Input
|
||||
%12 = OpTypePointer Output %3
|
||||
%11 = OpVariable %12 Output
|
||||
%14 = OpTypePointer Output %5
|
||||
%13 = OpVariable %14 Output
|
||||
%16 = OpTypeFunction %2
|
||||
%17 = OpConstant %4 0.0
|
||||
%18 = OpConstant %4 1.0
|
||||
%20 = OpTypePointer Function %6
|
||||
%21 = OpConstantNull %6
|
||||
%23 = OpTypePointer Function %3
|
||||
%26 = OpTypeInt 32 0
|
||||
%25 = OpConstant %26 0
|
||||
%32 = OpVariable %12 Output
|
||||
%34 = OpConstantComposite %3 %18 %17 %17 %18
|
||||
%15 = OpFunction %2 None %16
|
||||
%7 = OpLabel
|
||||
%19 = OpVariable %20 Function %21
|
||||
%10 = OpLoad %5 %8
|
||||
OpBranch %22
|
||||
%22 = OpLabel
|
||||
%24 = OpCompositeConstruct %3 %10 %17 %18
|
||||
%27 = OpAccessChain %23 %19 %25
|
||||
OpStore %27 %24
|
||||
%28 = OpLoad %6 %19
|
||||
%29 = OpCompositeExtract %3 %28 0
|
||||
OpStore %11 %29
|
||||
%30 = OpCompositeExtract %5 %28 1
|
||||
OpStore %13 %30
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
%33 = OpFunction %2 None %16
|
||||
%31 = OpLabel
|
||||
OpBranch %35
|
||||
%35 = OpLabel
|
||||
OpStore %32 %34
|
||||
OpReturn
|
||||
OpFunctionEnd
|
18
naga/tests/out/wgsl/6438-conflicting-idents.wgsl
Normal file
18
naga/tests/out/wgsl/6438-conflicting-idents.wgsl
Normal file
@ -0,0 +1,18 @@
|
||||
struct OurVertexShaderOutput {
|
||||
@builtin(position) position: vec4<f32>,
|
||||
@location(0) texcoord: vec2<f32>,
|
||||
}
|
||||
|
||||
@vertex
|
||||
fn vs(@location(0) xy: vec2<f32>) -> OurVertexShaderOutput {
|
||||
var vsOutput: OurVertexShaderOutput;
|
||||
|
||||
vsOutput.position = vec4<f32>(xy, 0f, 1f);
|
||||
let _e6 = vsOutput;
|
||||
return _e6;
|
||||
}
|
||||
|
||||
@fragment
|
||||
fn fs() -> @location(0) vec4<f32> {
|
||||
return vec4<f32>(1f, 0f, 0f, 1f);
|
||||
}
|
@ -937,6 +937,10 @@ fn convert_wgsl() {
|
||||
),
|
||||
("6220-break-from-loop", Targets::SPIRV),
|
||||
("index-by-value", Targets::SPIRV | Targets::IR),
|
||||
(
|
||||
"6438-conflicting-idents",
|
||||
Targets::SPIRV | Targets::METAL | Targets::GLSL | Targets::HLSL | Targets::WGSL,
|
||||
),
|
||||
];
|
||||
|
||||
for &(name, targets) in inputs.iter() {
|
||||
|
Loading…
Reference in New Issue
Block a user