320.tesc 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #version 320 es
  2. layout(vertices = 4) out;
  3. out int outa[gl_out.length()];
  4. layout(quads) in; // ERROR
  5. layout(ccw) out; // ERROR
  6. layout(fractional_even_spacing) in; // ERROR
  7. patch in vec4 patchIn; // ERROR
  8. patch out vec4 patchOut;
  9. void main()
  10. {
  11. barrier();
  12. int a = gl_MaxTessControlInputComponents +
  13. gl_MaxTessControlOutputComponents +
  14. gl_MaxTessControlTextureImageUnits +
  15. gl_MaxTessControlUniformComponents +
  16. gl_MaxTessControlTotalOutputComponents;
  17. vec4 p = gl_in[1].gl_Position;
  18. float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension
  19. float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES
  20. int pvi = gl_PatchVerticesIn;
  21. int pid = gl_PrimitiveID;
  22. int iid = gl_InvocationID;
  23. gl_out[gl_InvocationID].gl_Position = p;
  24. gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension
  25. gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; // ERROR, not in ES
  26. gl_TessLevelOuter[3] = 3.2;
  27. gl_TessLevelInner[1] = 1.3;
  28. if (a > 10)
  29. barrier(); // ERROR
  30. else
  31. barrier(); // ERROR
  32. barrier();
  33. do {
  34. barrier(); // ERROR
  35. } while (a > 10);
  36. switch (a) {
  37. default:
  38. barrier(); // ERROR
  39. break;
  40. }
  41. a < 12 ? a : (barrier(), a); // ERROR
  42. {
  43. barrier();
  44. }
  45. return;
  46. barrier(); // ERROR
  47. }
  48. layout(vertices = 4) in; // ERROR, not on in
  49. layout(vertices = 5) out; // ERROR, changing #
  50. void foo()
  51. {
  52. gl_out[4].gl_Position; // ERROR, out of range
  53. barrier(); // ERROR, not in main
  54. }
  55. in vec2 ina; // ERROR, not array
  56. in vec2 inb[];
  57. in vec2 inc[18]; // ERROR, wrong size
  58. in vec2 ind[gl_MaxPatchVertices];
  59. patch out float implA[]; // ERROR, not sized
  60. #extension GL_ARB_separate_shader_objects : enable
  61. layout(location = 3) in vec4 ivla[];
  62. layout(location = 4) in vec4 ivlb[];
  63. layout(location = 4) in vec4 ivlc[]; // ERROR, overlapping
  64. layout(location = 3) out vec4 ovla[];
  65. layout(location = 4) out vec4 ovlb[];
  66. layout(location = 4) out vec4 ovlc[]; // ERROR, overlapping
  67. patch out pinbn {
  68. int a;
  69. } pinbi;
  70. centroid out vec3 myColor2[];
  71. centroid in vec3 centr[];
  72. sample out vec4 perSampleColor[];
  73. layout(vertices = 4) out float badlay[]; // ERROR, not on a variable
  74. out float misSized[5]; // ERROR, size doesn't match
  75. out float okaySize[4];
  76. void pointSize2()
  77. {
  78. float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension
  79. gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension
  80. }
  81. precise vec3 pv3;
  82. void goodfoop()
  83. {
  84. precise float d;
  85. pv3 *= pv3;
  86. pv3 = fma(pv3, pv3, pv3);
  87. d = fma(d, d, d);
  88. }
  89. void bb()
  90. {
  91. gl_BoundingBoxEXT[0] = vec4(0.0); // ERROR without GL_EXT_primitive_bounding_box
  92. gl_BoundingBoxOES[0] = vec4(0.0); // ERROR without GL_OES_primitive_bounding_box
  93. gl_BoundingBox[0] = vec4(1.0);
  94. gl_BoundingBox[1] = vec4(1.0);
  95. gl_BoundingBox[2] = vec4(2.0); // ERROR, overflow
  96. }
  97. #extension GL_EXT_primitive_bounding_box : enable
  98. #extension GL_OES_primitive_bounding_box : enable
  99. void bbext()
  100. {
  101. gl_BoundingBoxEXT[1] = vec4(0.0);
  102. gl_BoundingBoxOES[1] = vec4(0.0);
  103. }
  104. out patch badpatchBName { // ERROR, array size required
  105. float f;
  106. } badpatchIName[];
  107. out patch patchBName {
  108. float f;
  109. } patchIName[4];
  110. void outputtingOutparam(out int a)
  111. {
  112. a = 2;
  113. }
  114. void outputting()
  115. {
  116. outa[gl_InvocationID] = 2;
  117. outa[1] = 2; // ERROR, not gl_InvocationID
  118. gl_out[0].gl_Position = vec4(1.0); // ERROR, not gl_InvocationID
  119. outa[1];
  120. gl_out[0];
  121. outputtingOutparam(outa[0]); // ERROR, not gl_InvocationID
  122. outputtingOutparam(outa[gl_InvocationID]);
  123. patchIName[1].f = 3.14;
  124. outa[(gl_InvocationID)] = 2;
  125. }