430.comp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #version 430 core
  2. layout(local_size_x = 2) in;
  3. layout(local_size_x = 16) in; // ERROR, changing
  4. layout(local_size_z = 4096) in; // ERROR, too large
  5. layout(local_size_x = 2) in;
  6. const int total = gl_MaxComputeWorkGroupCount.y
  7. + gl_MaxComputeUniformComponents
  8. + gl_MaxComputeTextureImageUnits
  9. + gl_MaxComputeImageUniforms
  10. + gl_MaxComputeAtomicCounters
  11. + gl_MaxComputeAtomicCounterBuffers;
  12. buffer ShaderStorageBlock
  13. {
  14. int value;
  15. float values[];
  16. };
  17. buffer InvalidShaderStorageBlock
  18. {
  19. float values[];
  20. int value;
  21. } invalid;
  22. void main()
  23. {
  24. barrier();
  25. memoryBarrier();
  26. memoryBarrierAtomicCounter();
  27. memoryBarrierBuffer();
  28. memoryBarrierShared();
  29. memoryBarrierImage();
  30. groupMemoryBarrier();
  31. value = int(values[gl_LocalInvocationIndex]);
  32. int a;
  33. if (a > 10)
  34. barrier();
  35. }
  36. layout(location = 2) in vec3 v3; // ERROR
  37. in float f; // ERROR
  38. out float fo; // ERROR
  39. shared vec4 s;
  40. layout(location = 2) shared vec4 sl; // ERROR
  41. shared float fs = 4.2; // ERROR
  42. layout(local_size_x = 2, local_size_y = 3, local_size_z = 4) out; // ERROR
  43. int arrX[gl_WorkGroupSize.x];
  44. int arrY[gl_WorkGroupSize.y];
  45. int arrZ[gl_WorkGroupSize.z];
  46. readonly buffer roblock
  47. {
  48. int value;
  49. float values[];
  50. } ro;
  51. void foo()
  52. {
  53. ro.values[2] = 4.7; // ERROR, readonly
  54. ro.values.length();
  55. barrier();
  56. }
  57. uniform double roll;
  58. uniform writeonly image2D destTex;
  59. void fooaoeu() {
  60. ivec2 storePos = ivec2(gl_GlobalInvocationID.xy);
  61. double localCoef = length(vec2(ivec2(gl_LocalInvocationID.xy)-8)/8.0);
  62. dvec4 aa = dvec4(0.4, 0.2, 0.3, 0.4);
  63. double globalCoef = 1.0;
  64. int i = globalCoef; // ERROR, can't convert from double to int
  65. double di = i;
  66. }
  67. in inb { // ERROR
  68. int a;
  69. } inbi;
  70. out outb { // ERROR
  71. int a;
  72. } outbi;