st/mesa: gl_program::info.system_values_read is a 64-bit-field
authorMichel Dänzer <michel.daenzer@amd.com>
Thu, 8 Mar 2018 16:32:50 +0000 (17:32 +0100)
committerMichel Dänzer <michel@daenzer.net>
Fri, 9 Mar 2018 15:52:11 +0000 (16:52 +0100)
We were dropping the upper 32 bits, which caused assertion failures in
some compute shader piglit tests with radeonsi since the commit below.

Fixes: 752e96970303 ("compiler: Add two new system values for subgroups")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/state_tracker/st_glsl_to_tgsi.cpp
src/mesa/state_tracker/st_mesa_to_tgsi.c

index ccf4dabcc9fd7e5c3678cdf4ac03fdba256b28ed..911c855d43ac75f62be810e05c514128dfdeeb41 100644 (file)
@@ -6532,10 +6532,10 @@ st_translate_program(
    /* Declare misc input registers
     */
    {
-      GLbitfield sysInputs = proginfo->info.system_values_read;
+      GLbitfield64 sysInputs = proginfo->info.system_values_read;
 
       for (i = 0; sysInputs; i++) {
-         if (sysInputs & (1 << i)) {
+         if (sysInputs & (1ull << i)) {
             enum tgsi_semantic semName = _mesa_sysval_to_semantic(i);
 
             t->systemValues[i] = ureg_DECL_system_value(ureg, semName, 0);
@@ -6567,7 +6567,7 @@ st_translate_program(
                emit_wpos(st_context(ctx), t, proginfo, ureg,
                          program->wpos_transform_const);
 
-            sysInputs &= ~(1 << i);
+            sysInputs &= ~(1ull << i);
          }
       }
    }
@@ -6864,7 +6864,7 @@ get_mesa_program_tgsi(struct gl_context *ctx,
    /* This must be done before the uniform storage is associated. */
    if (shader->Stage == MESA_SHADER_FRAGMENT &&
        (prog->info.inputs_read & VARYING_BIT_POS ||
-        prog->info.system_values_read & (1 << SYSTEM_VALUE_FRAG_COORD))) {
+        prog->info.system_values_read & (1ull << SYSTEM_VALUE_FRAG_COORD))) {
       static const gl_state_index16 wposTransformState[STATE_LENGTH] = {
          STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM
       };
index c76180a5799c269607a51f714d8843b585e8d25b..99cddd66282f5f67ec3c5f7c9e4121282f8e6bcd 100644 (file)
@@ -951,9 +951,9 @@ st_translate_mesa_program(struct gl_context *ctx,
 
    /* Declare misc input registers
     */
-   GLbitfield sysInputs = program->info.system_values_read;
+   GLbitfield64 sysInputs = program->info.system_values_read;
    for (i = 0; sysInputs; i++) {
-      if (sysInputs & (1 << i)) {
+      if (sysInputs & (1ull << i)) {
          unsigned semName = _mesa_sysval_to_semantic(i);
 
          t->systemValues[i] = ureg_DECL_system_value(ureg, semName, 0);
@@ -985,7 +985,7 @@ st_translate_mesa_program(struct gl_context *ctx,
              semName == TGSI_SEMANTIC_POSITION)
             emit_wpos(st_context(ctx), t, program, ureg);
 
-          sysInputs &= ~(1 << i);
+          sysInputs &= ~(1ull << i);
       }
    }