mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-09-13 09:16:14 -07:00
tests: Test hull shader attributes.
This commit is contained in:
parent
73ee5a135a
commit
ed1e74dd62
Notes:
Henri Verbeet
2024-09-04 18:50:05 +02:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1015
@ -132,6 +132,7 @@ vkd3d_shader_tests = \
|
|||||||
tests/hlsl/getdimensions.shader_test \
|
tests/hlsl/getdimensions.shader_test \
|
||||||
tests/hlsl/half.shader_test \
|
tests/hlsl/half.shader_test \
|
||||||
tests/hlsl/hard-copy-prop.shader_test \
|
tests/hlsl/hard-copy-prop.shader_test \
|
||||||
|
tests/hlsl/hull-shader-attributes.shader_test \
|
||||||
tests/hlsl/initializer-flatten.shader_test \
|
tests/hlsl/initializer-flatten.shader_test \
|
||||||
tests/hlsl/initializer-implicit-array.shader_test \
|
tests/hlsl/initializer-implicit-array.shader_test \
|
||||||
tests/hlsl/initializer-invalid-arg-count.shader_test \
|
tests/hlsl/initializer-invalid-arg-count.shader_test \
|
||||||
|
482
tests/hlsl/hull-shader-attributes.shader_test
Normal file
482
tests/hlsl/hull-shader-attributes.shader_test
Normal file
@ -0,0 +1,482 @@
|
|||||||
|
[require]
|
||||||
|
shader model >= 5.0
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
%% Test missing attributes.
|
||||||
|
|
||||||
|
[hull shader fail todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
% outputcontrolpoints defaults to 0 for SM >= 6.
|
||||||
|
[hull shader fail(sm<6) todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
//[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader fail todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
//[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader fail todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
//[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader fail todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
//[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
%% Test valid combinations of the domain and outputtopology attributes.
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("line")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader fail todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("triangle_cw")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader fail todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("triangle_ccw")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[3] : SV_TessFactor;
|
||||||
|
float inside : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("tri")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader fail todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[3] : SV_TessFactor;
|
||||||
|
float inside : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("tri")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("line")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[3] : SV_TessFactor;
|
||||||
|
float inside : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("tri")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("triangle_cw")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[3] : SV_TessFactor;
|
||||||
|
float inside : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("tri")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("triangle_ccw")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[4] : SV_TessFactor;
|
||||||
|
float inside[2] : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("quad")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader fail todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[4] : SV_TessFactor;
|
||||||
|
float inside[2] : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("quad")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("line")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[4] : SV_TessFactor;
|
||||||
|
float inside[2] : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("quad")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("triangle_cw")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[4] : SV_TessFactor;
|
||||||
|
float inside[2] : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("quad")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("triangle_ccw")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
%% Test the valid range for outputcontrolpoints ([0, 32]).
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(0)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(32)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hull shader fail todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(33)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("patch_constant")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% patchconstantfunc can't point to the main function.
|
||||||
|
[hull shader notimpl(sm<6) fail(sm>=6) todo]
|
||||||
|
struct patch_constant_data
|
||||||
|
{
|
||||||
|
float edges[2] : SV_TessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
patch_constant_data patch_constant()
|
||||||
|
{
|
||||||
|
return (patch_constant_data)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("isoline")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("point")]
|
||||||
|
[patchconstantfunc("main")]
|
||||||
|
float4 main() : POSITION
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user