@@ -227,8 +227,9 @@ class PixTest {
227227 TEST_METHOD (PixTypeManager_InheritancePointerTypedef)
228228 TEST_METHOD (PixTypeManager_MatricesInBase)
229229 TEST_METHOD (PixTypeManager_SamplersAndResources)
230+ TEST_METHOD (PixTypeManager_XBoxDiaAssert)
230231
231- TEST_METHOD (VirtualRegisters_InstructionCounts)
232+ TEST_METHOD (VirtualRegisters_InstructionCounts)
232233 TEST_METHOD (VirtualRegisters_AlignedOffsets)
233234
234235 TEST_METHOD (RootSignatureUpgrade_SubObjects)
@@ -2088,6 +2089,60 @@ void main()
20882089 VERIFY_SUCCEEDED (pDiaDataSource->openSession (&pDiaSession));
20892090}
20902091
2092+ TEST_F (PixTest, PixTypeManager_XBoxDiaAssert) {
2093+ if (m_ver.SkipDxilVersion (1 , 5 ))
2094+ return ;
2095+
2096+ const char *hlsl = R"(
2097+ struct VSOut
2098+ {
2099+ float4 vPosition : SV_POSITION;
2100+ float4 vLightAndFog : COLOR0_center;
2101+ float4 vTexCoords : TEXCOORD1;
2102+ };
2103+
2104+ struct HSPatchData
2105+ {
2106+ float edges[3] : SV_TessFactor;
2107+ float inside : SV_InsideTessFactor;
2108+ };
2109+
2110+ HSPatchData HSPatchFunc(const InputPatch<VSOut, 3> tri)
2111+ {
2112+
2113+ float dist = (tri[0].vPosition.w + tri[1].vPosition.w + tri[2].vPosition.w) / 3;
2114+
2115+
2116+ float tf = max(1, dist / 100.f);
2117+
2118+ HSPatchData pd;
2119+ pd.edges[0] = pd.edges[1] = pd.edges[2] = tf;
2120+ pd.inside = tf;
2121+
2122+ return pd;
2123+ }
2124+
2125+ [domain("tri")]
2126+ [partitioning("fractional_odd")]
2127+ [outputtopology("triangle_cw")]
2128+ [patchconstantfunc("HSPatchFunc")]
2129+ [outputcontrolpoints(3)]
2130+ [RootSignature("RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), " "DescriptorTable(SRV(t0, numDescriptors=2), visibility=SHADER_VISIBILITY_ALL)," "DescriptorTable(Sampler(s0, numDescriptors=2), visibility=SHADER_VISIBILITY_PIXEL)," "DescriptorTable(CBV(b0, numDescriptors=1), visibility=SHADER_VISIBILITY_ALL)," "DescriptorTable(CBV(b1, numDescriptors=1), visibility=SHADER_VISIBILITY_ALL)," "DescriptorTable(CBV(b2, numDescriptors=1), visibility=SHADER_VISIBILITY_ALL)," "DescriptorTable(SRV(t3, numDescriptors=1), visibility=SHADER_VISIBILITY_ALL)," "DescriptorTable(UAV(u9, numDescriptors=2), visibility=SHADER_VISIBILITY_ALL),")]
2131+ VSOut main( const uint id : SV_OutputControlPointID,
2132+ const InputPatch< VSOut, 3 > triIn )
2133+ {
2134+ return triIn[id];
2135+ }
2136+ )" ;
2137+
2138+ CComPtr<IDiaDataSource> pDiaDataSource;
2139+ CComPtr<IDiaSession> pDiaSession;
2140+ CompileAndRunAnnotationAndLoadDiaSource (m_dllSupport, hlsl, L" hs_6_0" ,
2141+ &pDiaDataSource);
2142+
2143+ VERIFY_SUCCEEDED (pDiaDataSource->openSession (&pDiaSession));
2144+ }
2145+
20912146CComPtr<IDxcBlob> PixTest::RunShaderAccessTrackingPass (IDxcBlob *blob) {
20922147 CComPtr<IDxcOptimizer> pOptimizer;
20932148 VERIFY_SUCCEEDED (
0 commit comments