Re: [Mesa-dev] [PATCH 06/12] nir/spirv: handle SpvStorageClassCrossWorkgroup

2019-01-07 Thread Jason Ekstrand
This seems reasonable.  However, I'd like to ask that you land patch 5 ASAP
and wait a little while on landing this one.  Having a at least couple
weeks with the rename but without adding back in nir_var_global with a
different meaning will increase the liklihood that merge conflicts will
result in compile errors rather than weird silent failures.

On Tue, Dec 4, 2018 at 12:27 PM Karol Herbst  wrote:

> Signed-off-by: Karol Herbst 
> ---
>  src/compiler/nir/nir.c | 4 
>  src/compiler/nir/nir.h | 1 +
>  src/compiler/nir/nir_print.c   | 2 ++
>  src/compiler/spirv/vtn_private.h   | 1 +
>  src/compiler/spirv/vtn_variables.c | 4 
>  5 files changed, 12 insertions(+)
>
> diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c
> index 45c4a3e8375..7f16200015f 100644
> --- a/src/compiler/nir/nir.c
> +++ b/src/compiler/nir/nir.c
> @@ -129,6 +129,10 @@ nir_shader_add_variable(nir_shader *shader,
> nir_variable *var)
>assert(!"nir_shader_add_variable cannot be used for local
> variables");
>break;
>
> +   case nir_var_global:
> +  assert(!"nir_shader_add_variable cannot be used for global memory");
> +  break;
> +
> case nir_var_private:
>exec_list_push_tail(>globals, >node);
>break;
> diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
> index 30d22fb9d7d..e9f8f15d387 100644
> --- a/src/compiler/nir/nir.h
> +++ b/src/compiler/nir/nir.h
> @@ -103,6 +103,7 @@ typedef enum {
> nir_var_shader_storage  = (1 << 5),
> nir_var_system_value= (1 << 6),
> nir_var_shared  = (1 << 8),
> +   nir_var_global  = (1 << 9),
> nir_var_all = ~0,
>  } nir_variable_mode;
>
> diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c
> index 1d409b1da7b..f509c92e0cd 100644
> --- a/src/compiler/nir/nir_print.c
> +++ b/src/compiler/nir/nir_print.c
> @@ -413,6 +413,8 @@ get_variable_mode_str(nir_variable_mode mode, bool
> want_local_global_mode)
>return want_local_global_mode ? "private" : "";
> case nir_var_function:
>return want_local_global_mode ? "function" : "";
> +   case nir_var_global:
> +  return want_local_global_mode ? "global" : "";
> default:
>return "";
> }
> diff --git a/src/compiler/spirv/vtn_private.h
> b/src/compiler/spirv/vtn_private.h
> index b84ac2cf0b4..e380d8e82ff 100644
> --- a/src/compiler/spirv/vtn_private.h
> +++ b/src/compiler/spirv/vtn_private.h
> @@ -417,6 +417,7 @@ enum vtn_variable_mode {
> vtn_variable_mode_ssbo,
> vtn_variable_mode_push_constant,
> vtn_variable_mode_workgroup,
> +   vtn_variable_mode_cross_workgroup,
> vtn_variable_mode_input,
> vtn_variable_mode_output,
>  };
> diff --git a/src/compiler/spirv/vtn_variables.c
> b/src/compiler/spirv/vtn_variables.c
> index b911b114b70..5bf407eb8a7 100644
> --- a/src/compiler/spirv/vtn_variables.c
> +++ b/src/compiler/spirv/vtn_variables.c
> @@ -1582,6 +1582,9 @@ vtn_storage_class_to_mode(struct vtn_builder *b,
>nir_mode = nir_var_uniform;
>break;
> case SpvStorageClassCrossWorkgroup:
> +  mode = vtn_variable_mode_cross_workgroup;
> +  nir_mode = nir_var_global;
> +  break;
> case SpvStorageClassGeneric:
> default:
>vtn_fail("Unhandled variable storage class");
> @@ -1841,6 +1844,7 @@ vtn_create_variable(struct vtn_builder *b, struct
> vtn_value *val,
> case vtn_variable_mode_ubo:
> case vtn_variable_mode_ssbo:
> case vtn_variable_mode_push_constant:
> +   case vtn_variable_mode_cross_workgroup:
>/* These don't need actual variables. */
>break;
> }
> --
> 2.19.2
>
>
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 06/12] nir/spirv: handle SpvStorageClassCrossWorkgroup

2018-12-04 Thread Karol Herbst
Signed-off-by: Karol Herbst 
---
 src/compiler/nir/nir.c | 4 
 src/compiler/nir/nir.h | 1 +
 src/compiler/nir/nir_print.c   | 2 ++
 src/compiler/spirv/vtn_private.h   | 1 +
 src/compiler/spirv/vtn_variables.c | 4 
 5 files changed, 12 insertions(+)

diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c
index 45c4a3e8375..7f16200015f 100644
--- a/src/compiler/nir/nir.c
+++ b/src/compiler/nir/nir.c
@@ -129,6 +129,10 @@ nir_shader_add_variable(nir_shader *shader, nir_variable 
*var)
   assert(!"nir_shader_add_variable cannot be used for local variables");
   break;
 
+   case nir_var_global:
+  assert(!"nir_shader_add_variable cannot be used for global memory");
+  break;
+
case nir_var_private:
   exec_list_push_tail(>globals, >node);
   break;
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 30d22fb9d7d..e9f8f15d387 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -103,6 +103,7 @@ typedef enum {
nir_var_shader_storage  = (1 << 5),
nir_var_system_value= (1 << 6),
nir_var_shared  = (1 << 8),
+   nir_var_global  = (1 << 9),
nir_var_all = ~0,
 } nir_variable_mode;
 
diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c
index 1d409b1da7b..f509c92e0cd 100644
--- a/src/compiler/nir/nir_print.c
+++ b/src/compiler/nir/nir_print.c
@@ -413,6 +413,8 @@ get_variable_mode_str(nir_variable_mode mode, bool 
want_local_global_mode)
   return want_local_global_mode ? "private" : "";
case nir_var_function:
   return want_local_global_mode ? "function" : "";
+   case nir_var_global:
+  return want_local_global_mode ? "global" : "";
default:
   return "";
}
diff --git a/src/compiler/spirv/vtn_private.h b/src/compiler/spirv/vtn_private.h
index b84ac2cf0b4..e380d8e82ff 100644
--- a/src/compiler/spirv/vtn_private.h
+++ b/src/compiler/spirv/vtn_private.h
@@ -417,6 +417,7 @@ enum vtn_variable_mode {
vtn_variable_mode_ssbo,
vtn_variable_mode_push_constant,
vtn_variable_mode_workgroup,
+   vtn_variable_mode_cross_workgroup,
vtn_variable_mode_input,
vtn_variable_mode_output,
 };
diff --git a/src/compiler/spirv/vtn_variables.c 
b/src/compiler/spirv/vtn_variables.c
index b911b114b70..5bf407eb8a7 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1582,6 +1582,9 @@ vtn_storage_class_to_mode(struct vtn_builder *b,
   nir_mode = nir_var_uniform;
   break;
case SpvStorageClassCrossWorkgroup:
+  mode = vtn_variable_mode_cross_workgroup;
+  nir_mode = nir_var_global;
+  break;
case SpvStorageClassGeneric:
default:
   vtn_fail("Unhandled variable storage class");
@@ -1841,6 +1844,7 @@ vtn_create_variable(struct vtn_builder *b, struct 
vtn_value *val,
case vtn_variable_mode_ubo:
case vtn_variable_mode_ssbo:
case vtn_variable_mode_push_constant:
+   case vtn_variable_mode_cross_workgroup:
   /* These don't need actual variables. */
   break;
}
-- 
2.19.2

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev