mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
624eccbab1
Unfortuantely different versions of DXC accept or fail differently in some cases. We don't care too much about validating the DXC behavior itself, but it's useful that all the CI jobs use the same version so that we don't have to complicate the shader runner language. The macOS version is currently bound to be pretty recent because otherwise libdxil.dylib is not provided. So I'm updating the Linux and Windows version as well. I don't expect it should be particularly hard for other maintainers to keep up with the DXC updates, since it just amounts to downloading a ZIP file and extracting two libraries.
483 lines
8.4 KiB
Plaintext
483 lines
8.4 KiB
Plaintext
[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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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 fail(sm>=6)]
|
|
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]
|
|
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)]
|
|
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;
|
|
}
|