• Home
  • Raw
  • Download

Lines Matching refs:NL

52 		return NL "";  in Title()
57 return NL ""; in Purpose()
62 return NL ""; in Method()
67 return NL ""; in PassCriteria()
894 return NL "Atomic Counter Buffer - basic operations"; in Title()
899 return NL in Purpose()
900 "Verify that basic buffer operations work as expected with new buffer target." NL in Purpose()
901 …ted commands: BindBuffer, BufferData, BufferSubData, MapBuffer, MapBufferRange, UnmapBuffer and" NL in Purpose()
907 return NL ""; in Method()
912 return NL ""; in PassCriteria()
1007 return NL "Atomic Counter Buffer - state"; in Title()
1012 return NL "Verify that setting and getting buffer state works as expected for new buffer target."; in Purpose()
1017 return NL ""; in Method()
1022 return NL ""; in PassCriteria()
1059 return NL "Atomic Counter Buffer - binding"; in Title()
1064 return NL "Verify that binding buffer objects to ATOMIC_COUNTER_BUFFER (indexed) target" NL in Purpose()
1065 …works as expected. In particualr make sure that binding with BindBufferBase and BindBufferRange" NL in Purpose()
1066 …so bind to generic binding point and deleting buffer that is currently bound unbinds it. Tested" NL in Purpose()
1072 return NL ""; in Method()
1077 return NL ""; in PassCriteria()
1186 return NL "Program - max values"; in Title()
1191 return NL "Verify all max values which deal with atomic counter buffers."; in Purpose()
1196 return NL ""; in Method()
1201 return NL ""; in PassCriteria()
1242 return NL "Program - atomic counters queries"; in Title()
1247 return NL "Get all the information from the program object about atomic counters." NL in Purpose()
1248 … "Verify that all informations are correct. Tested commands: glGetActiveAtomicCounterBufferiv," NL in Purpose()
1254 return NL ""; in Method()
1259 return NL ""; in PassCriteria()
1277 …const char* glsl_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void mai… in Run()
1278 " gl_Position = i_vertex;" NL "}"; in Run()
1280 "#version 420 core" NL "layout(location = 0, index = 0) out vec4 o_color;" NL in Run()
1281 "layout(binding = 0, offset = 0) uniform atomic_uint ac_counter0;" NL in Run()
1282 "layout(binding = 0, offset = 4) uniform atomic_uint ac_counter1;" NL in Run()
1283 "layout(binding = 0) uniform atomic_uint ac_counter2;" NL in Run()
1284 "layout(binding = 0) uniform atomic_uint ac_counter67[2];" NL in Run()
1285 "layout(binding = 0) uniform atomic_uint ac_counter3;" NL in Run()
1286 "layout(binding = 0) uniform atomic_uint ac_counter4;" NL in Run()
1287 …inding = 0) uniform atomic_uint ac_counter5;" NL "void main() {" NL " uint c = 0;" NL in Run()
1288 " c += atomicCounterIncrement(ac_counter0);" NL " c += atomicCounterIncrement(ac_counter1);" NL in Run()
1289 " c += atomicCounterIncrement(ac_counter2);" NL " c += atomicCounterIncrement(ac_counter3);" NL in Run()
1290 " c += atomicCounterIncrement(ac_counter4);" NL " c += atomicCounterIncrement(ac_counter5);" NL in Run()
1291 … c += atomicCounterIncrement(ac_counter67[0]);" NL " c += atomicCounterIncrement(ac_counter67[1]… in Run()
1292 … if (c > 10u) o_color = vec4(0.0, 1.0, 0.0, 1.0);" NL " else o_color = vec4(1.0, 0.0, 0.0, 1.0);"… in Run()
1468 return NL "Simple Use Case"; in Title()
1473 return NL "Verify that simple usage of atomic counters work as expected." NL in Purpose()
1479 return NL ""; in Method()
1484 return NL ""; in PassCriteria()
1502 …const char* src_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void main… in Run()
1503 " gl_Position = i_vertex;" NL "}"; in Run()
1504 const char* src_fs = "#version 420 core" NL "layout(location = 0) out vec4 o_color;" NL in Run()
1505 "layout(binding = 0, offset = 0) uniform atomic_uint ac_counter;" NL "void main() {" NL in Run()
1506 " uint c = atomicCounterIncrement(ac_counter);" NL in Run()
1507 " float r = float(c / 40u) / 255.0;" NL " o_color = vec4(r, 0.0, 0.0, 1.0);" NL "}"; in Run()
1553 return NL "Atomic Counters usage in the Fragment Shader stage"; in Title()
1558 return NL "Verify that atomic counters work as expected in the Fragment Shader stage." NL in Purpose()
1559 "In particular make sure that values returned by GLSL built-in functions" NL in Purpose()
1560 "atomicCounterIncrement and atomicCounterDecrement are unique in every shader invocation." NL in Purpose()
1566 return NL ""; in Method()
1571 return NL ""; in PassCriteria()
1591 …const char* src_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void main… in Run()
1592 " gl_Position = i_vertex;" NL "}"; in Run()
1594 const char* src_fs = "#version 420 core" NL "layout(location = 0) out uvec4 o_color[2];" NL in Run()
1595 "layout(binding = 0, offset = 0) uniform atomic_uint ac_counter_inc;" NL in Run()
1596 "layout(binding = 0, offset = 4) uniform atomic_uint ac_counter_dec;" NL "void main() {" NL in Run()
1597 " o_color[0] = uvec4(atomicCounterIncrement(ac_counter_inc));" NL in Run()
1598 " o_color[1] = uvec4(atomicCounterDecrement(ac_counter_dec));" NL "}"; in Run()
1686 return NL "Atomic Counters usage in the Vertex Shader stage"; in Title()
1691 return NL "Verify that atomic counters work as expected in the Vertex Shader stage." NL in Purpose()
1692 "In particular make sure that values returned by GLSL built-in functions" NL in Purpose()
1693 "atomicCounterIncrement and atomicCounterDecrement are unique in every shader invocation." NL in Purpose()
1699 return NL ""; in Method()
1704 return NL ""; in PassCriteria()
1736 "#version 420 core" NL "layout(location = 0) in uint i_zero;" NL "out uint o_atomic_inc;" NL in Run()
1737 …"out uint o_atomic_dec;" NL "layout(binding = 0, offset = 0) uniform atomic_uint ac_counter_inc;" in Run()
1738 "layout(binding = 1, offset = 0) uniform atomic_uint ac_counter_dec;" NL "void main() {" NL in Run()
1739 " o_atomic_inc = i_zero + atomicCounterIncrement(ac_counter_inc);" NL in Run()
1740 " o_atomic_dec = i_zero + atomicCounterDecrement(ac_counter_dec);" NL "}"; in Run()
1840 return NL "Atomic Counters usage in the Geometry Shader stage"; in Title()
1845 return NL "Verify that atomic counters work as expected in the Geometry Shader stage." NL in Purpose()
1846 "In particular make sure that values returned by GLSL built-in functions" NL in Purpose()
1847 "atomicCounterIncrement and atomicCounterDecrement are unique in every shader invocation." NL in Purpose()
1853 return NL ""; in Method()
1858 return NL ""; in PassCriteria()
1889 …const char* glsl_vs = "#version 420 core" NL "layout(location = 0) in uint i_zero;" NL "out uint v… in Run()
1890 "void main() {" NL " vs_zero = i_zero;" NL "}"; in Run()
1892 "#version 420 core" NL "layout(points) in;" NL "in uint vs_zero[];" NL in Run()
1893 … "layout(points, max_vertices = 1) out;" NL "out uint o_atomic_inc;" NL "out uint o_atomic_dec;" NL in Run()
1894 "layout(binding = 0, offset = 8) uniform atomic_uint ac_counter_inc;" NL in Run()
1895 "layout(binding = 0, offset = 16) uniform atomic_uint ac_counter_dec;" NL "void main() {" NL in Run()
1896 " o_atomic_inc = vs_zero[0] + atomicCounterIncrement(ac_counter_inc);" NL in Run()
1897 …" o_atomic_dec = vs_zero[0] + atomicCounterDecrement(ac_counter_dec);" NL " EmitVertex();" NL "}… in Run()
1989 return NL "Atomic Counters usage in the Tessellation Evaluation Shader stage"; in Title()
1994 …return NL "Verify that atomic counters work as expected in the Tessellation Evaluation Shader stag… in Purpose()
1995 "In particular make sure that values returned by GLSL built-in functions" NL in Purpose()
1996 "atomicCounterIncrement and atomicCounterDecrement are unique in every shader invocation." NL in Purpose()
2002 return NL ""; in Method()
2007 return NL ""; in PassCriteria()
2037 …const char* glsl_vs = "#version 420 core" NL "layout(location = 0) in uint i_zero;" NL "out uint v… in Run()
2038 "void main() {" NL " vs_zero = i_zero;" NL "}"; in Run()
2040 "#version 420 core" NL "layout(triangles, equal_spacing, ccw) in;" NL "in uint vs_zero[];" NL in Run()
2041 "out uint o_atomic_inc;" NL "out uint o_atomic_dec;" NL in Run()
2042 "layout(binding = 0, offset = 128) uniform atomic_uint ac_counter[2];" NL "void main() {" NL in Run()
2043 " o_atomic_inc = vs_zero[0] + vs_zero[31] + atomicCounterIncrement(ac_counter[0]);" NL in Run()
2044 " o_atomic_dec = vs_zero[0] + vs_zero[31] + atomicCounterDecrement(ac_counter[1]);" NL "}"; in Run()
2139 return NL "Same atomic counter accessed from multiple shader stages"; in Title()
2144 …return NL "Same atomic counter is incremented (decremented) from two shader stages (VS and FS)." NL in Purpose()
2146 "unique and" NL "final value in atomic counter buffer objects are as expected."; in Purpose()
2151 return NL ""; in Method()
2156 return NL ""; in PassCriteria()
2189 "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "out uint o_atomic_inc;" NL in Run()
2190 …"out uint o_atomic_dec;" NL "layout(binding = 1, offset = 16) uniform atomic_uint ac_counter_inc;"… in Run()
2191 "layout(binding = 7, offset = 128) uniform atomic_uint ac_counter_dec;" NL "void main() {" NL in Run()
2192 " gl_Position = i_vertex;" NL " o_atomic_inc = atomicCounterIncrement(ac_counter_inc);" NL in Run()
2193 " o_atomic_dec = atomicCounterDecrement(ac_counter_dec);" NL "}"; in Run()
2194 const char* src_fs = "#version 420 core" NL "layout(location = 0) out uvec4 o_color[2];" NL in Run()
2195 "layout(binding = 1, offset = 16) uniform atomic_uint ac_counter_inc;" NL in Run()
2196 "layout(binding = 7, offset = 128) uniform atomic_uint ac_counter_dec;" NL in Run()
2197 "void main() {" NL " o_color[0] = uvec4(atomicCounterIncrement(ac_counter_inc));" NL in Run()
2198 " o_color[1] = uvec4(atomicCounterDecrement(ac_counter_dec));" NL "}"; in Run()
2300 return NL "Update via Draw Call and update via MapBufferRange"; in Title()
2305 return NL "1. Create atomic counter buffers and init them with start values." NL in Purpose()
2306 "2. Increment (decrement) buffer values in the shader." NL in Purpose()
2307 "3. Map buffers with MapBufferRange command. Increment (decrement) buffer values manually." NL in Purpose()
2308 "4. Unmap buffers with UnmapBuffer command." NL in Purpose()
2309 "5. Again increment (decrement) buffer values in the shader." NL in Purpose()
2315 return NL ""; in Method()
2320 return NL ""; in PassCriteria()
2340 …const char* src_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void main… in Run()
2341 " gl_Position = i_vertex;" NL "}"; in Run()
2342 const char* src_fs = "#version 420 core" NL "layout(location = 0) out uvec4 o_color[2];" NL in Run()
2343 "layout(binding = 0) uniform atomic_uint ac_counter[2];" NL "void main() {" NL in Run()
2344 " o_color[0] = uvec4(atomicCounterIncrement(ac_counter[0]));" NL in Run()
2345 " o_color[1] = uvec4(atomicCounterDecrement(ac_counter[1]));" NL "}"; in Run()
2346 const char* src_fs2 = "#version 420 core" NL "layout(location = 0) out uvec4 o_color[2];" NL in Run()
2347 "layout(binding = 0) uniform atomic_uint ac_counter[2];" NL "void main() {" NL in Run()
2348 " o_color[0] = uvec4(atomicCounter(ac_counter[0]));" NL in Run()
2349 " o_color[1] = uvec4(atomicCounter(ac_counter[1]));" NL "}"; in Run()
2469 return NL "Large atomic counters array indexed with uniforms"; in Title()
2474 …return NL "Verify that large atomic counters array works as expected when indexed with dynamically… in Purpose()
2475 "expressions." NL in Purpose()
2481 return NL ""; in Method()
2486 return NL ""; in PassCriteria()
2507 …const char* src_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void main… in Run()
2508 " gl_Position = i_vertex;" NL "}"; in Run()
2510 "#version 420 core" NL "layout(location = 0) out uvec4 o_color[8];" NL in Run()
2511 … "uniform int u_active_counters[8];" NL "layout(binding = 0) uniform atomic_uint ac_counter[8];" NL in Run()
2512 …"void main() {" NL " o_color[0] = uvec4(atomicCounterIncrement(ac_counter[u_active_counters[0]]))… in Run()
2513 " o_color[1] = uvec4(atomicCounterDecrement(ac_counter[u_active_counters[1]]));" NL in Run()
2514 " o_color[2] = uvec4(atomicCounter(ac_counter[u_active_counters[2]]));" NL in Run()
2515 " o_color[3] = uvec4(atomicCounterIncrement(ac_counter[u_active_counters[3]]));" NL in Run()
2516 " o_color[4] = uvec4(atomicCounterDecrement(ac_counter[u_active_counters[4]]));" NL in Run()
2517 " o_color[5] = uvec4(atomicCounter(ac_counter[u_active_counters[5]]));" NL in Run()
2518 " o_color[6] = uvec4(atomicCounterIncrement(ac_counter[u_active_counters[6]]));" NL in Run()
2519 " o_color[7] = uvec4(atomicCounterIncrement(ac_counter[u_active_counters[7]]));" NL "}"; in Run()
2656 …return NL "Switching several program objects with different atomic counters with different binding… in Title()
2661 …return NL "Verify that each program upadate atomic counter buffer object in appropriate binding po… in Purpose()
2666 return NL ""; in Method()
2671 return NL ""; in PassCriteria()
2683 …os << "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "out uvec4 o_atomic_value… in GenVSSrc()
2686 << ") uniform atomic_uint ac_counter_vs;" NL "void main() {" NL " gl_Position = i_vertex;" NL in GenVSSrc()
2687 " o_atomic_value = uvec4(atomicCounterIncrement(ac_counter_vs));" NL "}"; in GenVSSrc()
2693 …os << "#version 420 core" NL "layout(location = 0) out uvec4 o_color;" NL "layout(binding = " << b… in GenFSSrc()
2694 << ", offset = " << offset << ") uniform atomic_uint ac_counter_fs;" NL "void main() {" NL in GenFSSrc()
2695 " o_color = uvec4(atomicCounterIncrement(ac_counter_fs));" NL "}"; in GenFSSrc()
2815 return NL "Atomic Counters used to access Uniform Buffer Objects"; in Title()
2820 …return NL "Atomic counters are used to access UBOs. In that way each shader invocation can access … in Purpose()
2821 "unique offset." NL in Purpose()
2827 return NL ""; in Method()
2832 return NL ""; in PassCriteria()
2854 …const char* src_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void main… in Run()
2855 " gl_Position = i_vertex;" NL "}"; in Run()
2857 "#version 420 core" NL "layout(location = 0) out uvec4 o_color;" NL in Run()
2858 …out(binding = 0, offset = 0) uniform atomic_uint ac_counter;" NL "layout(std140) uniform Data {" NL in Run()
2859 " uint index[256];" NL "} ub_data;" NL "void main() {" NL in Run()
2860 " o_color = uvec4(ub_data.index[atomicCounterIncrement(ac_counter)]);" NL "}"; in Run()
2938 return NL "Atomic Counters used to access Texture Buffer Objects"; in Title()
2943 …return NL "Atomic counters are used to access TBOs. In that way each shader invocation can access … in Purpose()
2944 "unique offset." NL in Purpose()
2950 return NL ""; in Method()
2955 return NL ""; in PassCriteria()
2979 …const char* src_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void main… in Run()
2980 " gl_Position = i_vertex;" NL "}"; in Run()
2982 "#version 420 core" NL "layout(location = 0) out uvec4 o_color;" NL in Run()
2983 …(binding = 0, offset = 0) uniform atomic_uint ac_counter;" NL "uniform usamplerBuffer s_buffer;" NL in Run()
2984 …"void main() {" NL " o_color = uvec4(texelFetch(s_buffer, int(atomicCounterIncrement(ac_counter))… in Run()
3067 return NL "GetActiveAtomicCounterBufferiv"; in Title()
3072 return NL "Verify errors reported by GetActiveAtomicCounterBufferiv command."; in Purpose()
3077 return NL ""; in Method()
3082 return NL ""; in PassCriteria()
3097 …const char* glsl_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void mai… in Run()
3098 " gl_Position = i_vertex;" NL "}"; in Run()
3099 const char* glsl_fs = "#version 420 core" NL "layout(location = 0) out uvec4 o_color[4];" NL in Run()
3100 "layout(binding = 0) uniform atomic_uint ac_counter0;" NL "void main() {" NL in Run()
3101 " o_color[0] = uvec4(atomicCounterIncrement(ac_counter0));" NL "}"; in Run()
3170 return NL "GLSL errors"; in Title()
3175 return NL "Verify that two different atomic counter uniforms with same binding " in Purpose()
3181 return NL ""; in Method()
3186 return NL ""; in PassCriteria()
3200 …const char* glsl_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void mai… in Run()
3201 " gl_Position = i_vertex;" NL "}"; in Run()
3202 const char* glsl_fs = "#version 420 core" NL "layout(location = 0) out uvec4 o_color[4];" NL in Run()
3203 "layout(binding = 0, offset = 4) uniform atomic_uint ac_counter0;" NL in Run()
3204 "layout(binding = 0, offset = 4) uniform atomic_uint ac_counter2;" NL "void main() {" NL in Run()
3205 " o_color[0] = uvec4(atomicCounterIncrement(ac_counter0));" NL in Run()
3206 " o_color[2] = uvec4(atomicCounterIncrement(ac_counter2));" NL "}"; in Run()
3234 return NL "GLSL errors"; in Title()
3239 return NL "Verify that atomic counters cannot be declared in uniform block."; in Purpose()
3244 return NL ""; in Method()
3249 return NL ""; in PassCriteria()
3264 …const char* glsl_vs = "#version 430 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void mai… in Run()
3265 " gl_Position = i_vertex;" NL "}"; in Run()
3268 "#version 430 core" NL "layout(location = 0) out uvec4 o_color[4];" NL "uniform Block {" NL in Run()
3269 … " layout(binding = 0, offset = 0) uniform atomic_uint ac_counter0;" NL "};" NL "void main() {" NL in Run()
3270 " o_color[0] = uvec4(atomicCounterIncrement(ac_counter0));" NL "}"; in Run()
3320 return NL "GLSL errors"; in Title()
3325 return NL "Verify that atomic counters cannot be declared in the buffer block."; in Purpose()
3330 return NL ""; in Method()
3335 return NL ""; in PassCriteria()
3356 …const char* glsl_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void mai… in Run()
3357 " gl_Position = i_vertex;" NL "}"; in Run()
3359 …const char* glsl_fs1 = "#version 420 core" NL "#extension GL_ARB_shader_storage_buffer_object: req… in Run()
3360 "layout(location = 0) out uvec4 o_color[4];" NL "layout(binding = 0) buffer Buffer {" NL in Run()
3361 " layout(binding = 0, offset = 16) uniform atomic_uint ac_counter0;" NL "};" NL in Run()
3362 "void main() {" NL " o_color[0] = uvec4(atomicCounterIncrement(ac_counter0));" NL "}"; in Run()
3412 return NL "GLSL errors"; in Title()
3417 return NL "Verify that atomicCounterIncrement/atomicCounterDecrement " in Purpose()
3423 return NL ""; in Method()
3428 return NL ""; in PassCriteria()
3443 …const char* glsl_vs = "#version 430 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void mai… in Run()
3444 " gl_Position = i_vertex;" NL "}"; in Run()
3447 …"#version 430 core" NL "layout(location = 0) out uvec4 o_color[4];" NL "uniform uint ac_counter0;"… in Run()
3448 "void main() {" NL " o_color[0] = uvec4(atomicCounterIncrement(ac_counter0));" NL "}"; in Run()
3498 return NL "GLSL errors"; in Title()
3503 return NL "Verify that atomicCounterIncrement/atomicCounterDecrement " in Purpose()
3509 return NL ""; in Method()
3514 return NL ""; in PassCriteria()
3529 …const char* glsl_vs = "#version 430 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void mai… in Run()
3530 " gl_Position = i_vertex;" NL "}"; in Run()
3532 const char* glsl_fs1 = "#version 430 core" NL "layout(location = 0) out uvec4 o_color[4];" NL in Run()
3533 "layout(binding = 0, offset = 0) uniform atomic_uint ac_counter0[3];" NL in Run()
3534 "void main() {" NL " o_color[0] = uvec4(atomicCounterIncrement(ac_counter0));" NL in Run()
3535 " o_color[1] = uvec4(atomicCounterDecrement(ac_counter0));" NL "}"; in Run()
3585 return NL "GLSL errors"; in Title()
3590 return NL "Verify that it is compile-time error to declare an unsized array of atomic_uint.."; in Purpose()
3595 return NL ""; in Method()
3600 return NL ""; in PassCriteria()
3605 const char* glsl_fs1 = "#version 450 core" NL "layout(location = 0) out uvec4 o_color[4];" in Run()
3606 " layout(binding = 0, offset = 4) uniform atomic_uint ac_counter[];" NL in Run()
3607 "void main() {" NL " o_color[0] = uvec4(atomicCounterIncrement(ac_counter[0]));" NL "}"; in Run()
3632 return NL "Atomic Counters usage with no offset"; in Title()
3637 …return NL "Verify that atomic counters work as expected in the Fragment Shader when declared with … in Purpose()
3638 …"qualifier in layout." NL "In particular make sure that values returned by GLSL built-in functions… in Purpose()
3639 "atomicCounterIncrement and atomicCounterDecrement are unique in every shader invocation." NL in Purpose()
3645 return NL ""; in Method()
3650 return NL ""; in PassCriteria()
3670 …const char* src_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void main… in Run()
3671 " gl_Position = i_vertex;" NL "}"; in Run()
3672 const char* src_fs = "#version 420 core" NL "layout(location = 0) out uvec4 o_color[2];" NL in Run()
3673 "layout(binding = 0) uniform atomic_uint ac_counter_inc;" NL in Run()
3674 "layout(binding = 0) uniform atomic_uint ac_counter_dec;" NL "void main() {" NL in Run()
3675 " o_color[0] = uvec4(atomicCounterIncrement(ac_counter_inc));" NL in Run()
3676 " o_color[1] = uvec4(atomicCounterDecrement(ac_counter_dec));" NL "}"; in Run()
3765 return NL "Atomic Counters usage in the Compute Shader stage"; in Title()
3770 return NL "Verify that atomic counters work as expected in the Compute Shader stage." NL in Purpose()
3771 "In particular make sure that values returned by GLSL built-in functions" NL in Purpose()
3772 "atomicCounterIncrement and atomicCounterDecrement are unique in every shader invocation." NL in Purpose()
3778 return NL ""; in Method()
3783 return NL ""; in PassCriteria()
3930 NL "layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in;" NL in Run()
3931 "layout(binding = 0, offset = 0) uniform atomic_uint ac_counter_inc;" NL in Run()
3932 "layout(binding = 0, offset = 4) uniform atomic_uint ac_counter_dec;" NL in Run()
3933 …"layout(std430) buffer Output {" NL " uint data_inc[256];" NL " uint data_dec[256];" NL "} g_out… in Run()
3934 … "void main() {" NL " uint offset = 32 * gl_GlobalInvocationID.y + gl_GlobalInvocationID.x;" NL in Run()
3935 " g_out.data_inc[offset] = atomicCounterIncrement(ac_counter_inc);" NL in Run()
3936 " g_out.data_dec[offset] = atomicCounterDecrement(ac_counter_dec);" NL "}"; in Run()
4004 return NL "Atomic Counters usage in multiple draw calls"; in Title()
4009 return NL "Verify atomic counters behaviour across multiple draw calls."; in Purpose()
4014 return NL ""; in Method()
4019 return NL ""; in PassCriteria()
4039 …const char* src_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void main… in Run()
4040 " gl_Position = i_vertex;" NL "}"; in Run()
4041 const char* src_fs = "#version 420 core" NL "layout(location = 0) out uvec4 o_color[2];" NL in Run()
4042 "layout(binding = 0, offset = 0) uniform atomic_uint ac_counter_inc;" NL in Run()
4043 "layout(binding = 0, offset = 4) uniform atomic_uint ac_counter_dec;" NL "void main() {" NL in Run()
4044 " o_color[0] = uvec4(atomicCounterIncrement(ac_counter_inc));" NL in Run()
4045 " o_color[1] = uvec4(atomicCounterDecrement(ac_counter_dec));" NL "}"; in Run()
4140 return NL "GLSL errors"; in Title()
4145 return NL "Verify that standard arithmetic operations \n" in Purpose()
4151 return NL ""; in Method()
4156 return NL ""; in PassCriteria()
4171 …const char* glsl_vs = "#version 420 core" NL "layout(location = 0) in vec4 i_vertex;" NL "void mai… in Run()
4172 " gl_Position = i_vertex;" NL "}"; in Run()
4174 const char* glsl_fs1 = "#version 420 core" NL "layout(location = 0) out uvec4 o_color[4];" NL in Run()
4175 "layout(binding = 0, offset = 0) uniform atomic_uint ac_counter;" NL "void main() {" NL in Run()
4176 " o_color[0] = ac_counter++;" NL "}"; in Run()
4259 …onst char* const glsl_vs = "#version 420 core" NL "out gl_PerVertex {" NL " vec4 gl_Position;" NL in Run()
4260 "void main() {" NL " gl_Position = vec4(0, 0, 0, 1);" NL "}"; in Run()
4262 "#version 420 core" NL "#extension GL_ARB_shader_storage_buffer_object : require" NL in Run()
4263 …ayout(binding = 0) uniform atomic_uint g_counter;" NL "layout(std430, binding = 0) buffer Output {… in Run()
4264 …" uint g_output[];" NL "};" NL "void main() {" NL " uint c = atomicCounterIncrement(g_counter);"… in Run()
4265 " g_output[c] = c;" NL "}"; in Run()
4374 "#version 420 core" NL "#extension GL_ARB_compute_shader : require" NL in Run()
4375 "#extension GL_ARB_shader_storage_buffer_object : require" NL "layout(local_size_x = 1) in;" NL in Run()
4376 …ayout(binding = 0) uniform atomic_uint g_counter;" NL "layout(std430, binding = 0) buffer Output {… in Run()
4377 …" uint g_output[];" NL "};" NL "void main() {" NL " const uint c = atomicCounterIncrement(g_coun… in Run()
4378 " g_output[c] = c;" NL "}"; in Run()
4446 return NL "gl_Max* Check"; in Title()
4451 …return NL "Verify that gl_Max*Counters and gl_Max*Bindings exist in glsl and their values are no l… in Purpose()
4478 const char* const glsl_cs = NL in Run()
4479 …t(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;" NL "layout(std430) buffer Output {" NL in Run()
4480 …" uint data;" NL "} g_out;" NL "uniform int m_vac;" NL "uniform int m_fac;" NL "uniform int m_csa… in Run()
4481 … "uniform int m_cac;" NL "uniform int m_abuf;" NL "uniform int m_tcac;" NL "uniform int m_teac;" NL in Run()
4482 "uniform int m_gac;" NL "void main() {" NL " uint res = 1u;" NL in Run()
4483 …l_MaxVertexAtomicCounters < 0 || gl_MaxVertexAtomicCounters != m_vac)" NL " res = res * 2u;" NL in Run()
4484 " if (gl_MaxFragmentAtomicCounters < 0 || gl_MaxFragmentAtomicCounters != m_fac)" NL in Run()
4485 " res = res * 3u;" NL in Run()
4486 " if (gl_MaxComputeAtomicCounters < 8 || gl_MaxComputeAtomicCounters != m_csac)" NL in Run()
4487 " res = res * 5u;" NL in Run()
4488 " if (gl_MaxCombinedAtomicCounters < 8 || gl_MaxCombinedAtomicCounters != m_cac)" NL in Run()
4489 " res = res * 7u;" NL in Run()
4490 " if (gl_MaxAtomicCounterBindings < 1 || gl_MaxAtomicCounterBindings != m_abuf)" NL in Run()
4491 " res = res * 11u;" NL in Run()
4492 " if (gl_MaxTessControlAtomicCounters < 0 || gl_MaxTessControlAtomicCounters != m_tcac)" NL in Run()
4493 " res = res * 13u;" NL in Run()
4494 … " if (gl_MaxTessEvaluationAtomicCounters < 0 || gl_MaxTessEvaluationAtomicCounters != m_teac)" NL in Run()
4495 " res = res * 17u;" NL in Run()
4496 " if (gl_MaxGeometryAtomicCounters < 0 || gl_MaxGeometryAtomicCounters != m_gac)" NL in Run()
4497 " res = res * 19u;" NL " g_out.data = res;" NL "}"; in Run()