The test program for IDs (generated in cs-ids-common.c) has hx, hy and
hz variables that are half of the maximum ID for that dimension.

Previously we only considered the local workgroup size, even when we
were reading the gl_GlobalInvocationID variable.

Signed-off-by: Jordan Justen <[email protected]>
---
 tests/spec/arb_compute_shader/cs-ids-common.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/tests/spec/arb_compute_shader/cs-ids-common.c 
b/tests/spec/arb_compute_shader/cs-ids-common.c
index f08e886..b60fb2d 100644
--- a/tests/spec/arb_compute_shader/cs-ids-common.c
+++ b/tests/spec/arb_compute_shader/cs-ids-common.c
@@ -63,8 +63,10 @@ static const char *compute_shader_source =
        "\n"
        "#ifdef GLOBAL_ID_TEST\n"
        "#define ID_VAR gl_GlobalInvocationID\n"
+       "#define ID_DIM(a) (gl_NumWorkGroups.a * gl_WorkGroupSize.a)\n"
        "#else\n"
        "#define ID_VAR gl_LocalInvocationID\n"
+       "#define ID_DIM(a) (gl_WorkGroupSize.a)\n"
        "#endif\n"
        "\n"
        "void main()\n"
@@ -72,9 +74,9 @@ static const char *compute_shader_source =
        "    uint x = ID_VAR.x;\n"
        "    uint y = ID_VAR.y;\n"
        "    uint z = ID_VAR.z;\n"
-       "    uint hx = gl_WorkGroupSize.x / 2u;\n"
-       "    uint hy = gl_WorkGroupSize.y / 2u;\n"
-       "    uint hz = gl_WorkGroupSize.z / 2u;\n"
+       "    uint hx = ID_DIM(x) / 2u;\n"
+       "    uint hy = ID_DIM(y) / 2u;\n"
+       "    uint hz = ID_DIM(z) / 2u;\n"
        "\n"
        "    if (((x & y) & z) == 0u)\n"
        "        atomicCounterIncrement(a0);\n"
@@ -120,16 +122,16 @@ confirm_size()
        ys = local_y;
        zs = local_z;
 
-       hx = xs / 2u;
-       hy = ys / 2u;
-       hz = zs / 2u;
-
        if (global_id) {
                xs *= global_x;
                ys *= global_y;
                zs *= global_z;
        }
 
+       hx = xs / 2u;
+       hy = ys / 2u;
+       hz = zs / 2u;
+
        memset(&values, 0, sizeof values);
 
        for (z = 0; z < zs; z++) {
-- 
2.5.1

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to