spv.controlFlowAttributes.frag 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #version 450
  2. #extension GL_EXT_control_flow_attributes : enable
  3. bool cond;
  4. void main()
  5. {
  6. [[unroll]] for (int i = 0; i < 8; ++i) { }
  7. [[loop]] for (;;) { }
  8. [[dont_unroll]] while(true) { }
  9. [[dependency_infinite]] do { } while(true);
  10. [[dependency_length(1+3)]] for (int i = 0; i < 8; ++i) { }
  11. [[flatten]] if (cond) { } else { }
  12. [[branch]] if (cond) cond = false;
  13. [[dont_flatten]] switch(3) { } // dropped
  14. [[dont_flatten]] switch(3) { case 3: break; }
  15. // warnings on all these
  16. [[unroll(2)]] for (int i = 0; i < 8; ++i) { }
  17. [[dont_unroll(-2)]] while(true) { }
  18. [[dependency_infinite(3)]] do { } while(true);
  19. [[dependency_length]] for (int i = 0; i < 8; ++i) { }
  20. [[flatten(3)]] if (cond) { } else { }
  21. [[branch(5.2)]] if (cond) cond = false;
  22. [[dont_flatten(3 + 7)]] switch(3) { case 3: break; }
  23. // other valid uses
  24. [[ unroll, dont_unroll, dependency_length(2) ]] while(cond) { }
  25. [ [ dont_flatten , branch ] ] switch(3) { case 3: break; }
  26. [
  27. // attribute
  28. [
  29. // here
  30. flatten
  31. ]
  32. ] if (cond) { } else { }
  33. [[ dependency_length(2), dependency_infinite ]] while(cond) { }
  34. }