Revert "nir: drop support for using load_alpha_ref_float"
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Mon, 21 Oct 2019 08:48:09 +0000 (10:48 +0200)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Wed, 23 Oct 2019 11:03:52 +0000 (13:03 +0200)
This reverts commit 5af272b47469398762e984e27f65fc4ecc293d28.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jose Maria Casanova <jmcasanova@igalia.com>
src/compiler/nir/nir_lower_alpha_test.c

index a13de554445f36bce797e0718f1931443de8202d..b652fb796be71cc427c6c1dca30a019d92dcb4ae 100644 (file)
@@ -40,7 +40,6 @@ nir_lower_alpha_test(nir_shader *shader, enum compare_func func,
                      bool alpha_to_one,
                      const gl_state_index16 *alpha_ref_state_tokens)
 {
-   assert(alpha_ref_state_tokens);
    assert(shader->info.stage == MESA_SHADER_FRAGMENT);
 
    nir_foreach_function(function, shader) {
@@ -95,16 +94,20 @@ nir_lower_alpha_test(nir_shader *shader, enum compare_func func,
                                       3);
                }
 
-               nir_variable *var = nir_variable_create(shader,
-                                                       nir_var_uniform,
-                                                       glsl_float_type(),
-                                                       "gl_AlphaRefMESA");
-               var->num_state_slots = 1;
-               var->state_slots = ralloc_array(var, nir_state_slot, 1);
-               memcpy(var->state_slots[0].tokens,
-                      alpha_ref_state_tokens,
-                      sizeof(var->state_slots[0].tokens));
-               nir_ssa_def *alpha_ref = nir_load_var(&b, var);
+               nir_ssa_def *alpha_ref;
+               if (alpha_ref_state_tokens) {
+                  nir_variable *var = nir_variable_create(shader,
+                                                          nir_var_uniform,
+                                                          glsl_float_type(),
+                                                          "gl_AlphaRefMESA");
+                  var->num_state_slots = 1;
+                  var->state_slots = ralloc_array(var, nir_state_slot, 1);
+                  memcpy(var->state_slots[0].tokens,
+                         alpha_ref_state_tokens,
+                         sizeof(var->state_slots[0].tokens));
+                  alpha_ref = nir_load_var(&b, var);
+               } else
+                  alpha_ref = nir_load_alpha_ref_float(&b);
 
                nir_ssa_def *condition =
                   nir_compare_func(&b, func, alpha, alpha_ref);