Re: [Mesa-dev] [PATCH 11/12] spirv: Generate code to track SPIR-V capability dependencies

2017-11-22 Thread Dylan Baker
With the one thing Eric pointed out changed, this patch and the next one are:
Reviewed-by: Dylan Baker 

Thanks for making those changes for me.

Quoting Ian Romanick (2017-11-20 17:24:09)
> From: Ian Romanick 
> 
> v2: Clean ups.  Remove some functions that never ended up being used.
> 
> v3: After updating spirv.core.grammar.json, fix the handling of
> ShaderViewportMaskNV.  See the comment around line 71 of
> spirv_capabilities_h.py.
> 
> v4: Many Python style changes based on feedback from Dylan.
> 
> Signed-off-by: Ian Romanick 
> ---
>  src/compiler/Makefile.sources  |   2 +
>  src/compiler/Makefile.spirv.am |   8 +
>  src/compiler/glsl/meson.build  |   5 +-
>  src/compiler/spirv/.gitignore  |   2 +
>  src/compiler/spirv/meson.build |  14 ++
>  src/compiler/spirv/spirv_capabilities_h.py | 365 
> +
>  6 files changed, 394 insertions(+), 2 deletions(-)
>  create mode 100644 src/compiler/spirv/spirv_capabilities_h.py
> 
> diff --git a/src/compiler/Makefile.sources b/src/compiler/Makefile.sources
> index 2ab8e16..1d67cba 100644
> --- a/src/compiler/Makefile.sources
> +++ b/src/compiler/Makefile.sources
> @@ -287,6 +287,8 @@ NIR_FILES = \
> nir/nir_worklist.h
>  
>  SPIRV_GENERATED_FILES = \
> +   spirv/spirv_capabilities.cpp \
> +   spirv/spirv_capabilities.h \
> spirv/spirv_info.c
>  
>  SPIRV_FILES = \
> diff --git a/src/compiler/Makefile.spirv.am b/src/compiler/Makefile.spirv.am
> index 9841004..4bc684a 100644
> --- a/src/compiler/Makefile.spirv.am
> +++ b/src/compiler/Makefile.spirv.am
> @@ -20,6 +20,14 @@
>  # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
> DEALINGS
>  # IN THE SOFTWARE.
>  
> +spirv/spirv_capabilities.cpp: spirv/spirv_capabilities_h.py 
> spirv/spirv.core.grammar.json
> +   $(MKDIR_GEN)
> +   $(PYTHON_GEN) $(srcdir)/spirv/spirv_capabilities_h.py 
> $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
> +
> +spirv/spirv_capabilities.h: spirv/spirv_capabilities_h.py 
> spirv/spirv.core.grammar.json
> +   $(MKDIR_GEN)
> +   $(PYTHON_GEN) $(srcdir)/spirv/spirv_capabilities_h.py 
> $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
> +
>  spirv/spirv_info.c: spirv/spirv_info_c.py spirv/spirv.core.grammar.json
> $(MKDIR_GEN)
> $(PYTHON_GEN) $(srcdir)/spirv/spirv_info_c.py 
> $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
> diff --git a/src/compiler/glsl/meson.build b/src/compiler/glsl/meson.build
> index 5b505c0..6e43f80 100644
> --- a/src/compiler/glsl/meson.build
> +++ b/src/compiler/glsl/meson.build
> @@ -198,11 +198,12 @@ files_libglsl_standalone = files(
>  libglsl = static_library(
>'glsl',
>[files_libglsl, glsl_parser, glsl_lexer_cpp, ir_expression_operation_h,
> -   ir_expression_operation_strings_h, ir_expression_operation_constant_h],
> +   ir_expression_operation_strings_h, ir_expression_operation_constant_h,
> +   spirv_capabilities_cpp, spirv_capabilities_h],
>c_args : [c_vis_args, c_msvc_compat_args, no_override_init_args],
>cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
>link_with : [libnir, libglcpp],
> -  include_directories : [inc_common, inc_compiler, inc_nir],
> +  include_directories : [inc_common, inc_compiler, inc_nir, inc_spirv],
>build_by_default : false,
>  )
>  
> diff --git a/src/compiler/spirv/.gitignore b/src/compiler/spirv/.gitignore
> index f723c31..6b5ef0a 100644
> --- a/src/compiler/spirv/.gitignore
> +++ b/src/compiler/spirv/.gitignore
> @@ -1 +1,3 @@
> +/spirv_capabilities.cpp
> +/spirv_capabilities.h
>  /spirv_info.c
> diff --git a/src/compiler/spirv/meson.build b/src/compiler/spirv/meson.build
> index 8f1a02e..8b6071a 100644
> --- a/src/compiler/spirv/meson.build
> +++ b/src/compiler/spirv/meson.build
> @@ -24,3 +24,17 @@ spirv_info_c = custom_target(
>output : 'spirv_info.c',
>command : [prog_python2, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
>  )
> +
> +spirv_capabilities_cpp = custom_target(
> +  'spirv_capabilities.cpp',
> +  input : files('spirv_capabilities_h.py', 'spirv.core.grammar.json'),
> +  output : 'spirv_capabilities.cpp',
> +  command : [prog_python2, '@INPUT0@', '--gen-cpp', '@OUTPUT@', '@INPUT1@'],
> +)
> +
> +spirv_capabilities_h = custom_target(
> +  'spirv_capabilities.h',
> +  input : files('spirv_capabilities_h.py', 'spirv.core.grammar.json'),
> +  output : 'spirv_capabilities.h',
> +  command : [prog_python2, '@INPUT0@', '--gen-h', '@OUTPUT@', '@INPUT1@'],
> +)
> diff --git a/src/compiler/spirv/spirv_capabilities_h.py 
> b/src/compiler/spirv/spirv_capabilities_h.py
> new file mode 100644
> index 000..78b1166
> --- /dev/null
> +++ b/src/compiler/spirv/spirv_capabilities_h.py
> @@ -0,0 +1,365 @@
> +COPYRIGHT = """\
> +/*
> + * Copyright (C) 2017 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, 

Re: [Mesa-dev] [PATCH 11/12] spirv: Generate code to track SPIR-V capability dependencies

2017-11-22 Thread Ian Romanick
On 11/21/2017 03:29 AM, Eric Engestrom wrote:
> On Monday, 2017-11-20 17:24:09 -0800, Ian Romanick wrote:
>> diff --git a/src/compiler/Makefile.spirv.am b/src/compiler/Makefile.spirv.am
>> index 9841004..4bc684a 100644
>> --- a/src/compiler/Makefile.spirv.am
>> +++ b/src/compiler/Makefile.spirv.am
>> @@ -20,6 +20,14 @@
>>  # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
>> DEALINGS
>>  # IN THE SOFTWARE.
>>  
>> +spirv/spirv_capabilities.cpp: spirv/spirv_capabilities_h.py 
>> spirv/spirv.core.grammar.json
>> +$(MKDIR_GEN)
>> +$(PYTHON_GEN) $(srcdir)/spirv/spirv_capabilities_h.py 
>> $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
>> +
>> +spirv/spirv_capabilities.h: spirv/spirv_capabilities_h.py 
>> spirv/spirv.core.grammar.json
>> +$(MKDIR_GEN)
>> +$(PYTHON_GEN) $(srcdir)/spirv/spirv_capabilities_h.py 
>> $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
> 
> Missing `--gen-cpp`/`--gen-h`

That's weird.  I made that change after it failed to build on our CI
system.  This also prompted me to poke at Dylan about when we can remove
the autotools build system so that I only have to update 1 build instead
of 2. :)  I will look into this...

>> +
>>  spirv/spirv_info.c: spirv/spirv_info_c.py spirv/spirv.core.grammar.json
>>  $(MKDIR_GEN)
>>  $(PYTHON_GEN) $(srcdir)/spirv/spirv_info_c.py 
>> $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 11/12] spirv: Generate code to track SPIR-V capability dependencies

2017-11-21 Thread Eric Engestrom
On Monday, 2017-11-20 17:24:09 -0800, Ian Romanick wrote:
> From: Ian Romanick 
> 
> v2: Clean ups.  Remove some functions that never ended up being used.
> 
> v3: After updating spirv.core.grammar.json, fix the handling of
> ShaderViewportMaskNV.  See the comment around line 71 of
> spirv_capabilities_h.py.
> 
> v4: Many Python style changes based on feedback from Dylan.
> 
> Signed-off-by: Ian Romanick 
> ---
>  src/compiler/Makefile.sources  |   2 +
>  src/compiler/Makefile.spirv.am |   8 +
>  src/compiler/glsl/meson.build  |   5 +-
>  src/compiler/spirv/.gitignore  |   2 +
>  src/compiler/spirv/meson.build |  14 ++
>  src/compiler/spirv/spirv_capabilities_h.py | 365 
> +
>  6 files changed, 394 insertions(+), 2 deletions(-)
>  create mode 100644 src/compiler/spirv/spirv_capabilities_h.py
> 
> diff --git a/src/compiler/Makefile.sources b/src/compiler/Makefile.sources
> index 2ab8e16..1d67cba 100644
> --- a/src/compiler/Makefile.sources
> +++ b/src/compiler/Makefile.sources
> @@ -287,6 +287,8 @@ NIR_FILES = \
>   nir/nir_worklist.h
>  
>  SPIRV_GENERATED_FILES = \
> + spirv/spirv_capabilities.cpp \
> + spirv/spirv_capabilities.h \
>   spirv/spirv_info.c
>  
>  SPIRV_FILES = \
> diff --git a/src/compiler/Makefile.spirv.am b/src/compiler/Makefile.spirv.am
> index 9841004..4bc684a 100644
> --- a/src/compiler/Makefile.spirv.am
> +++ b/src/compiler/Makefile.spirv.am
> @@ -20,6 +20,14 @@
>  # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
> DEALINGS
>  # IN THE SOFTWARE.
>  
> +spirv/spirv_capabilities.cpp: spirv/spirv_capabilities_h.py 
> spirv/spirv.core.grammar.json
> + $(MKDIR_GEN)
> + $(PYTHON_GEN) $(srcdir)/spirv/spirv_capabilities_h.py 
> $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
> +
> +spirv/spirv_capabilities.h: spirv/spirv_capabilities_h.py 
> spirv/spirv.core.grammar.json
> + $(MKDIR_GEN)
> + $(PYTHON_GEN) $(srcdir)/spirv/spirv_capabilities_h.py 
> $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)

Missing `--gen-cpp`/`--gen-h`

> +
>  spirv/spirv_info.c: spirv/spirv_info_c.py spirv/spirv.core.grammar.json
>   $(MKDIR_GEN)
>   $(PYTHON_GEN) $(srcdir)/spirv/spirv_info_c.py 
> $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
> diff --git a/src/compiler/glsl/meson.build b/src/compiler/glsl/meson.build
> index 5b505c0..6e43f80 100644
> --- a/src/compiler/glsl/meson.build
> +++ b/src/compiler/glsl/meson.build
> @@ -198,11 +198,12 @@ files_libglsl_standalone = files(
>  libglsl = static_library(
>'glsl',
>[files_libglsl, glsl_parser, glsl_lexer_cpp, ir_expression_operation_h,
> -   ir_expression_operation_strings_h, ir_expression_operation_constant_h],
> +   ir_expression_operation_strings_h, ir_expression_operation_constant_h,
> +   spirv_capabilities_cpp, spirv_capabilities_h],
>c_args : [c_vis_args, c_msvc_compat_args, no_override_init_args],
>cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
>link_with : [libnir, libglcpp],
> -  include_directories : [inc_common, inc_compiler, inc_nir],
> +  include_directories : [inc_common, inc_compiler, inc_nir, inc_spirv],
>build_by_default : false,
>  )
>  
> diff --git a/src/compiler/spirv/.gitignore b/src/compiler/spirv/.gitignore
> index f723c31..6b5ef0a 100644
> --- a/src/compiler/spirv/.gitignore
> +++ b/src/compiler/spirv/.gitignore
> @@ -1 +1,3 @@
> +/spirv_capabilities.cpp
> +/spirv_capabilities.h
>  /spirv_info.c
> diff --git a/src/compiler/spirv/meson.build b/src/compiler/spirv/meson.build
> index 8f1a02e..8b6071a 100644
> --- a/src/compiler/spirv/meson.build
> +++ b/src/compiler/spirv/meson.build
> @@ -24,3 +24,17 @@ spirv_info_c = custom_target(
>output : 'spirv_info.c',
>command : [prog_python2, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
>  )
> +
> +spirv_capabilities_cpp = custom_target(
> +  'spirv_capabilities.cpp',
> +  input : files('spirv_capabilities_h.py', 'spirv.core.grammar.json'),
> +  output : 'spirv_capabilities.cpp',
> +  command : [prog_python2, '@INPUT0@', '--gen-cpp', '@OUTPUT@', '@INPUT1@'],
> +)
> +
> +spirv_capabilities_h = custom_target(
> +  'spirv_capabilities.h',
> +  input : files('spirv_capabilities_h.py', 'spirv.core.grammar.json'),
> +  output : 'spirv_capabilities.h',
> +  command : [prog_python2, '@INPUT0@', '--gen-h', '@OUTPUT@', '@INPUT1@'],
> +)
> diff --git a/src/compiler/spirv/spirv_capabilities_h.py 
> b/src/compiler/spirv/spirv_capabilities_h.py
> new file mode 100644
> index 000..78b1166
> --- /dev/null
> +++ b/src/compiler/spirv/spirv_capabilities_h.py
> @@ -0,0 +1,365 @@
> +COPYRIGHT = """\
> +/*
> + * Copyright (C) 2017 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software 

[Mesa-dev] [PATCH 11/12] spirv: Generate code to track SPIR-V capability dependencies

2017-11-20 Thread Ian Romanick
From: Ian Romanick 

v2: Clean ups.  Remove some functions that never ended up being used.

v3: After updating spirv.core.grammar.json, fix the handling of
ShaderViewportMaskNV.  See the comment around line 71 of
spirv_capabilities_h.py.

v4: Many Python style changes based on feedback from Dylan.

Signed-off-by: Ian Romanick 
---
 src/compiler/Makefile.sources  |   2 +
 src/compiler/Makefile.spirv.am |   8 +
 src/compiler/glsl/meson.build  |   5 +-
 src/compiler/spirv/.gitignore  |   2 +
 src/compiler/spirv/meson.build |  14 ++
 src/compiler/spirv/spirv_capabilities_h.py | 365 +
 6 files changed, 394 insertions(+), 2 deletions(-)
 create mode 100644 src/compiler/spirv/spirv_capabilities_h.py

diff --git a/src/compiler/Makefile.sources b/src/compiler/Makefile.sources
index 2ab8e16..1d67cba 100644
--- a/src/compiler/Makefile.sources
+++ b/src/compiler/Makefile.sources
@@ -287,6 +287,8 @@ NIR_FILES = \
nir/nir_worklist.h
 
 SPIRV_GENERATED_FILES = \
+   spirv/spirv_capabilities.cpp \
+   spirv/spirv_capabilities.h \
spirv/spirv_info.c
 
 SPIRV_FILES = \
diff --git a/src/compiler/Makefile.spirv.am b/src/compiler/Makefile.spirv.am
index 9841004..4bc684a 100644
--- a/src/compiler/Makefile.spirv.am
+++ b/src/compiler/Makefile.spirv.am
@@ -20,6 +20,14 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 # IN THE SOFTWARE.
 
+spirv/spirv_capabilities.cpp: spirv/spirv_capabilities_h.py 
spirv/spirv.core.grammar.json
+   $(MKDIR_GEN)
+   $(PYTHON_GEN) $(srcdir)/spirv/spirv_capabilities_h.py 
$(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
+
+spirv/spirv_capabilities.h: spirv/spirv_capabilities_h.py 
spirv/spirv.core.grammar.json
+   $(MKDIR_GEN)
+   $(PYTHON_GEN) $(srcdir)/spirv/spirv_capabilities_h.py 
$(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
+
 spirv/spirv_info.c: spirv/spirv_info_c.py spirv/spirv.core.grammar.json
$(MKDIR_GEN)
$(PYTHON_GEN) $(srcdir)/spirv/spirv_info_c.py 
$(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false)
diff --git a/src/compiler/glsl/meson.build b/src/compiler/glsl/meson.build
index 5b505c0..6e43f80 100644
--- a/src/compiler/glsl/meson.build
+++ b/src/compiler/glsl/meson.build
@@ -198,11 +198,12 @@ files_libglsl_standalone = files(
 libglsl = static_library(
   'glsl',
   [files_libglsl, glsl_parser, glsl_lexer_cpp, ir_expression_operation_h,
-   ir_expression_operation_strings_h, ir_expression_operation_constant_h],
+   ir_expression_operation_strings_h, ir_expression_operation_constant_h,
+   spirv_capabilities_cpp, spirv_capabilities_h],
   c_args : [c_vis_args, c_msvc_compat_args, no_override_init_args],
   cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
   link_with : [libnir, libglcpp],
-  include_directories : [inc_common, inc_compiler, inc_nir],
+  include_directories : [inc_common, inc_compiler, inc_nir, inc_spirv],
   build_by_default : false,
 )
 
diff --git a/src/compiler/spirv/.gitignore b/src/compiler/spirv/.gitignore
index f723c31..6b5ef0a 100644
--- a/src/compiler/spirv/.gitignore
+++ b/src/compiler/spirv/.gitignore
@@ -1 +1,3 @@
+/spirv_capabilities.cpp
+/spirv_capabilities.h
 /spirv_info.c
diff --git a/src/compiler/spirv/meson.build b/src/compiler/spirv/meson.build
index 8f1a02e..8b6071a 100644
--- a/src/compiler/spirv/meson.build
+++ b/src/compiler/spirv/meson.build
@@ -24,3 +24,17 @@ spirv_info_c = custom_target(
   output : 'spirv_info.c',
   command : [prog_python2, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
 )
+
+spirv_capabilities_cpp = custom_target(
+  'spirv_capabilities.cpp',
+  input : files('spirv_capabilities_h.py', 'spirv.core.grammar.json'),
+  output : 'spirv_capabilities.cpp',
+  command : [prog_python2, '@INPUT0@', '--gen-cpp', '@OUTPUT@', '@INPUT1@'],
+)
+
+spirv_capabilities_h = custom_target(
+  'spirv_capabilities.h',
+  input : files('spirv_capabilities_h.py', 'spirv.core.grammar.json'),
+  output : 'spirv_capabilities.h',
+  command : [prog_python2, '@INPUT0@', '--gen-h', '@OUTPUT@', '@INPUT1@'],
+)
diff --git a/src/compiler/spirv/spirv_capabilities_h.py 
b/src/compiler/spirv/spirv_capabilities_h.py
new file mode 100644
index 000..78b1166
--- /dev/null
+++ b/src/compiler/spirv/spirv_capabilities_h.py
@@ -0,0 +1,365 @@
+COPYRIGHT = """\
+/*
+ * Copyright (C) 2017 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this