intel/blorp: Add compute support to BLORP_CREATE_NIR_INPUT
authorJordan Justen <jordan.l.justen@intel.com>
Thu, 25 Oct 2018 23:17:04 +0000 (16:17 -0700)
committerMarge Bot <eric+marge@anholt.net>
Thu, 30 Sep 2021 17:41:33 +0000 (17:41 +0000)
Reworks:
 * Set driver_location (s-b Jason)

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11564>

src/intel/blorp/blorp_priv.h

index ac66802..4ae551e 100644 (file)
@@ -161,12 +161,18 @@ blorp_create_nir_input(struct nir_shader *nir,
                        const struct glsl_type *type,
                        unsigned int offset)
 {
-   nir_variable *input =
-      nir_variable_create(nir, nir_var_shader_in, type, name);
+   nir_variable *input;
+   if (nir->info.stage == MESA_SHADER_COMPUTE) {
+      input = nir_variable_create(nir, nir_var_uniform, type, name);
+      input->data.driver_location = offset;
+      input->data.location = offset;
+   } else {
+      input = nir_variable_create(nir, nir_var_shader_in, type, name);
+      input->data.location = VARYING_SLOT_VAR0 + offset / (4 * sizeof(float));
+      input->data.location_frac = (offset / sizeof(float)) % 4;
+   }
    if (nir->info.stage == MESA_SHADER_FRAGMENT)
       input->data.interpolation = INTERP_MODE_FLAT;
-   input->data.location = VARYING_SLOT_VAR0 + offset / (4 * sizeof(float));
-   input->data.location_frac = (offset / sizeof(float)) % 4;
    return input;
 }