hs.structure.hlsl 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Run: %dxc -T hs_6_0 -E main
  2. #include "bezier_common_hull.hlsl"
  3. // This test ensures:
  4. // 1- The hull shader entry point function is invoked.
  5. // 2- Control barrier is placed before PCF is called.
  6. // 3- PCF is called by invocationID of 0.
  7. // CHECK: %main = OpFunction %void None {{%\d+}}
  8. // CHECK: [[id:%\d+]] = OpLoad %uint %gl_InvocationID
  9. // CHECK: {{%\d+}} = OpFunctionCall %BEZIER_CONTROL_POINT %src_main %param_var_ip %param_var_i %param_var_PatchID
  10. // CHECK: OpControlBarrier %uint_2 %uint_4 %uint_0
  11. // CHECK: [[cond:%\d+]] = OpIEqual %bool [[id]] %uint_0
  12. // CHECK: OpSelectionMerge %if_merge None
  13. // CHECK: OpBranchConditional [[cond]] %if_true %if_merge
  14. // CHECK: %if_true = OpLabel
  15. // CHECK: {{%\d+}} = OpFunctionCall %HS_CONSTANT_DATA_OUTPUT %SubDToBezierConstantsHS %param_var_ip %param_var_PatchID
  16. // CHECK: OpBranch %if_merge
  17. // CHECK: %if_merge = OpLabel
  18. // CHECK: OpReturn
  19. // CHECK: OpFunctionEnd
  20. [domain("isoline")]
  21. [partitioning("fractional_odd")]
  22. [outputtopology("line")]
  23. [outputcontrolpoints(16)]
  24. [patchconstantfunc("SubDToBezierConstantsHS")]
  25. BEZIER_CONTROL_POINT main(InputPatch<VS_CONTROL_POINT_OUTPUT, MAX_POINTS> ip, uint i : SV_OutputControlPointID, uint PatchID : SV_PrimitiveID) {
  26. VS_CONTROL_POINT_OUTPUT vsOutput;
  27. BEZIER_CONTROL_POINT result;
  28. result.vPosition = vsOutput.vPosition;
  29. return result;
  30. }