@@ -1444,4 +1444,87 @@ TEST(GraphicsAccessories_GraphicsAccessories, TextureComponentAttribsToTextureFo
14441444 }
14451445}
14461446
1447+
1448+ TEST (GraphicsAccessories_GraphicsAccessories, ProcessPipelineStateCreateInfoShaders)
1449+ {
1450+ {
1451+ GraphicsPipelineStateCreateInfo CI;
1452+
1453+ ptrdiff_t Ptr = 0x1000 ;
1454+ ProcessPipelineStateCreateInfoShaders (CI, [&Ptr](IShader*& pShader) {
1455+ pShader = reinterpret_cast <IShader*>(Ptr);
1456+ Ptr += 0x1000 ;
1457+ });
1458+
1459+ EXPECT_EQ (CI.pVS , reinterpret_cast <IShader*>(0x1000 ));
1460+ EXPECT_EQ (CI.pPS , reinterpret_cast <IShader*>(0x2000 ));
1461+ EXPECT_EQ (CI.pDS , reinterpret_cast <IShader*>(0x3000 ));
1462+ EXPECT_EQ (CI.pHS , reinterpret_cast <IShader*>(0x4000 ));
1463+ EXPECT_EQ (CI.pGS , reinterpret_cast <IShader*>(0x5000 ));
1464+ EXPECT_EQ (CI.pAS , reinterpret_cast <IShader*>(0x6000 ));
1465+ EXPECT_EQ (CI.pMS , reinterpret_cast <IShader*>(0x7000 ));
1466+
1467+ Ptr = 0x1000 ;
1468+ ProcessPipelineStateCreateInfoShaders (static_cast <const GraphicsPipelineStateCreateInfo&>(CI), [&Ptr](IShader* pShader) {
1469+ EXPECT_EQ (pShader, reinterpret_cast <IShader*>(Ptr));
1470+ Ptr += 0x1000 ;
1471+ });
1472+ }
1473+
1474+ {
1475+ ComputePipelineStateCreateInfo CI;
1476+ ProcessPipelineStateCreateInfoShaders (CI, [](IShader*& pShader) {
1477+ pShader = reinterpret_cast <IShader*>(0x1000 );
1478+ });
1479+
1480+ EXPECT_EQ (CI.pCS , reinterpret_cast <IShader*>(0x1000 ));
1481+
1482+ ProcessPipelineStateCreateInfoShaders (static_cast <const ComputePipelineStateCreateInfo&>(CI), [](IShader* pShader) {
1483+ EXPECT_EQ (pShader, reinterpret_cast <IShader*>(0x1000 ));
1484+ });
1485+ }
1486+
1487+ {
1488+ TilePipelineStateCreateInfo CI;
1489+ ProcessPipelineStateCreateInfoShaders (CI, [](IShader*& pShader) {
1490+ pShader = reinterpret_cast <IShader*>(0x1000 );
1491+ });
1492+
1493+ EXPECT_EQ (CI.pTS , reinterpret_cast <IShader*>(0x1000 ));
1494+
1495+ ProcessPipelineStateCreateInfoShaders (static_cast <const TilePipelineStateCreateInfo&>(CI), [](IShader* pShader) {
1496+ EXPECT_EQ (pShader, reinterpret_cast <IShader*>(0x1000 ));
1497+ });
1498+ }
1499+
1500+ {
1501+ RayTracingPipelineStateCreateInfo CI;
1502+
1503+ RayTracingGeneralShaderGroup GeneralGroup;
1504+ GeneralGroup.pShader = reinterpret_cast <IShader*>(0x1000 );
1505+
1506+ RayTracingTriangleHitShaderGroup TriangleHitGroup;
1507+ TriangleHitGroup.pClosestHitShader = reinterpret_cast <IShader*>(0x2000 );
1508+ TriangleHitGroup.pAnyHitShader = reinterpret_cast <IShader*>(0x3000 );
1509+
1510+ RayTracingProceduralHitShaderGroup ProceduralHitGroup;
1511+ ProceduralHitGroup.pIntersectionShader = reinterpret_cast <IShader*>(0x4000 );
1512+ ProceduralHitGroup.pClosestHitShader = reinterpret_cast <IShader*>(0x5000 );
1513+ ProceduralHitGroup.pAnyHitShader = reinterpret_cast <IShader*>(0x6000 );
1514+
1515+ CI.pGeneralShaders = &GeneralGroup;
1516+ CI.GeneralShaderCount = 1 ;
1517+ CI.pTriangleHitShaders = &TriangleHitGroup;
1518+ CI.TriangleHitShaderCount = 1 ;
1519+ CI.pProceduralHitShaders = &ProceduralHitGroup;
1520+ CI.ProceduralHitShaderCount = 1 ;
1521+
1522+ ptrdiff_t Ptr = 0x1000 ;
1523+ ProcessPipelineStateCreateInfoShaders (static_cast <const RayTracingPipelineStateCreateInfo&>(CI), [&Ptr](IShader* pShader) {
1524+ EXPECT_EQ (pShader, reinterpret_cast <IShader*>(Ptr));
1525+ Ptr += 0x1000 ;
1526+ });
1527+ }
1528+ }
1529+
14471530} // namespace
0 commit comments