Re: [Mesa-dev] [PATCH 10/24] spirv_extensions: add GL_ARB_spirv_extensions boilerplate

2017-11-28 Thread Alejandro Piñeiro


On 27/11/17 23:12, Ian Romanick wrote:
> On 11/15/2017 05:22 AM, Eduardo Lima Mitev wrote:
>> From: Alejandro Piñeiro 
>>
>> ---
>>  src/mapi/glapi/gen/ARB_spirv_extensions.xml | 13 
>>  src/mapi/glapi/gen/Makefile.am  |  1 +
>>  src/mapi/glapi/gen/gl_API.xml   |  2 ++
>>  src/mesa/Makefile.sources   |  2 ++
>>  src/mesa/main/extensions_table.h|  1 +
>>  src/mesa/main/get.c |  6 
>>  src/mesa/main/get_hash_params.py|  3 ++
>>  src/mesa/main/getstring.c   |  7 +
>>  src/mesa/main/mtypes.h  |  1 +
>>  src/mesa/main/spirvextensions.c | 42 +
>>  src/mesa/main/spirvextensions.h | 49 
>> +
>>  11 files changed, 127 insertions(+)
>>  create mode 100644 src/mapi/glapi/gen/ARB_spirv_extensions.xml
>>  create mode 100644 src/mesa/main/spirvextensions.c
>>  create mode 100644 src/mesa/main/spirvextensions.h
> Could these files be renamed spirv_extensions.[ch]?
Ok
>
>> diff --git a/src/mapi/glapi/gen/ARB_spirv_extensions.xml 
>> b/src/mapi/glapi/gen/ARB_spirv_extensions.xml
>> new file mode 100644
>> index 000..103393104c2
>> --- /dev/null
>> +++ b/src/mapi/glapi/gen/ARB_spirv_extensions.xml
>> @@ -0,0 +1,13 @@
>> +
>> +
>> +
>> +
>> +
>> +
>> +
>> +
>> +
>> +
>> +
>> +
>> +
>> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
>> index 35e37e95a9f..9a7a268adbf 100644
>> --- a/src/mapi/glapi/gen/Makefile.am
>> +++ b/src/mapi/glapi/gen/Makefile.am
>> @@ -167,6 +167,7 @@ API_XML = \
>>  ARB_shader_subroutine.xml \
>>  ARB_shader_storage_buffer_object.xml \
>>  ARB_sparse_buffer.xml \
>> +ARB_spirv_extensions.xml \
>>  ARB_sync.xml \
>>  ARB_tessellation_shader.xml \
>>  ARB_texture_barrier.xml \
>> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
>> index d3594cfe195..6b81160b5a1 100644
>> --- a/src/mapi/glapi/gen/gl_API.xml
>> +++ b/src/mapi/glapi/gen/gl_API.xml
>> @@ -8404,6 +8404,8 @@
>>  
>>  > xmlns:xi="http://www.w3.org/2001/XInclude"/>
>>  
>> +> xmlns:xi="http://www.w3.org/2001/XInclude"/>
>> +
>>  
>>  
>>  
>> diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources
>> index e9680bf004c..944c8bcc812 100644
>> --- a/src/mesa/Makefile.sources
>> +++ b/src/mesa/Makefile.sources
>> @@ -203,6 +203,8 @@ MAIN_FILES = \
>>  main/shader_query.cpp \
>>  main/shared.c \
>>  main/shared.h \
>> +main/spirvextensions.c \
>> +main/spirvextensions.h \
>>  main/state.c \
>>  main/state.h \
>>  main/stencil.c \
>> diff --git a/src/mesa/main/extensions_table.h 
>> b/src/mesa/main/extensions_table.h
>> index ab15ceb9414..06deabd0640 100644
>> --- a/src/mesa/main/extensions_table.h
>> +++ b/src/mesa/main/extensions_table.h
>> @@ -129,6 +129,7 @@ EXT(ARB_shading_language_420pack, 
>> ARB_shading_language_420pack
>>  EXT(ARB_shading_language_packing, ARB_shading_language_packing  
>>  , GLL, GLC,  x ,  x , 2011)
>>  EXT(ARB_shadow  , ARB_shadow
>>  , GLL,  x ,  x ,  x , 2001)
>>  EXT(ARB_sparse_buffer   , ARB_sparse_buffer 
>>  , GLL, GLC,  x ,  x , 2014)
>> +EXT(ARB_spirv_extensions, ARB_spirv_extensions  
>>  ,  x,  GLC,  x ,  x , 2016)
>>  EXT(ARB_stencil_texturing   , ARB_stencil_texturing 
>>  , GLL, GLC,  x ,  x , 2012)
>>  EXT(ARB_sync, ARB_sync  
>>  , GLL, GLC,  x ,  x , 2003)
>>  EXT(ARB_tessellation_shader , ARB_tessellation_shader   
>>  ,  x , GLC,  x ,  x , 2009)
>> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
>> index ea8d932b182..c97ec9efde9 100644
>> --- a/src/mesa/main/get.c
>> +++ b/src/mesa/main/get.c
>> @@ -34,6 +34,7 @@
>>  #include "get.h"
>>  #include "macros.h"
>>  #include "mtypes.h"
>> +#include "spirvextensions.h"
>>  #include "state.h"
>>  #include "texcompress.h"
>>  #include "texstate.h"
>> @@ -1151,6 +1152,11 @@ find_custom_value(struct gl_context *ctx, const 
>> struct value_desc *d, union valu
>>   }
>>}
>>break;
>> +
>> +   /* ARB_spirv_extensions */
>> +   case GL_NUM_SPIR_V_EXTENSIONS:
>> +  v->value_int = _mesa_get_spirv_extension_count(ctx);
>> +  break;
>> }
>>  }
>>  
>> diff --git a/src/mesa/main/get_hash_params.py 
>> b/src/mesa/main/get_hash_params.py
>> index 20ef6e4977a..4378cc1cabe 100644
>> --- a/src/mesa/main/get_hash_params.py
>> +++ b/src/mesa/main/get_hash_params.py
>> @@ -378,6 +378,9 @@ descriptor=[
>>  # GL_ARB_sampler_objects / GL 3.3 / GLES 3.0
>>[ "SAMPLER_BINDING", "LOC_CUSTOM, TYPE_INT, GL_SAMPLER_BINDING, NO_EXTRA" 
>> ],
>>  
>> +# GL_ARB_spirv_extensions
>> +  [ 

Re: [Mesa-dev] [PATCH 10/24] spirv_extensions: add GL_ARB_spirv_extensions boilerplate

2017-11-27 Thread Ian Romanick
On 11/15/2017 05:22 AM, Eduardo Lima Mitev wrote:
> From: Alejandro Piñeiro 
> 
> ---
>  src/mapi/glapi/gen/ARB_spirv_extensions.xml | 13 
>  src/mapi/glapi/gen/Makefile.am  |  1 +
>  src/mapi/glapi/gen/gl_API.xml   |  2 ++
>  src/mesa/Makefile.sources   |  2 ++
>  src/mesa/main/extensions_table.h|  1 +
>  src/mesa/main/get.c |  6 
>  src/mesa/main/get_hash_params.py|  3 ++
>  src/mesa/main/getstring.c   |  7 +
>  src/mesa/main/mtypes.h  |  1 +
>  src/mesa/main/spirvextensions.c | 42 +
>  src/mesa/main/spirvextensions.h | 49 
> +
>  11 files changed, 127 insertions(+)
>  create mode 100644 src/mapi/glapi/gen/ARB_spirv_extensions.xml
>  create mode 100644 src/mesa/main/spirvextensions.c
>  create mode 100644 src/mesa/main/spirvextensions.h

Could these files be renamed spirv_extensions.[ch]?

> 
> diff --git a/src/mapi/glapi/gen/ARB_spirv_extensions.xml 
> b/src/mapi/glapi/gen/ARB_spirv_extensions.xml
> new file mode 100644
> index 000..103393104c2
> --- /dev/null
> +++ b/src/mapi/glapi/gen/ARB_spirv_extensions.xml
> @@ -0,0 +1,13 @@
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
> index 35e37e95a9f..9a7a268adbf 100644
> --- a/src/mapi/glapi/gen/Makefile.am
> +++ b/src/mapi/glapi/gen/Makefile.am
> @@ -167,6 +167,7 @@ API_XML = \
>   ARB_shader_subroutine.xml \
>   ARB_shader_storage_buffer_object.xml \
>   ARB_sparse_buffer.xml \
> + ARB_spirv_extensions.xml \
>   ARB_sync.xml \
>   ARB_tessellation_shader.xml \
>   ARB_texture_barrier.xml \
> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
> index d3594cfe195..6b81160b5a1 100644
> --- a/src/mapi/glapi/gen/gl_API.xml
> +++ b/src/mapi/glapi/gen/gl_API.xml
> @@ -8404,6 +8404,8 @@
>  
>   xmlns:xi="http://www.w3.org/2001/XInclude"/>
>  
> + xmlns:xi="http://www.w3.org/2001/XInclude"/>
> +
>  
>  
>  
> diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources
> index e9680bf004c..944c8bcc812 100644
> --- a/src/mesa/Makefile.sources
> +++ b/src/mesa/Makefile.sources
> @@ -203,6 +203,8 @@ MAIN_FILES = \
>   main/shader_query.cpp \
>   main/shared.c \
>   main/shared.h \
> + main/spirvextensions.c \
> + main/spirvextensions.h \
>   main/state.c \
>   main/state.h \
>   main/stencil.c \
> diff --git a/src/mesa/main/extensions_table.h 
> b/src/mesa/main/extensions_table.h
> index ab15ceb9414..06deabd0640 100644
> --- a/src/mesa/main/extensions_table.h
> +++ b/src/mesa/main/extensions_table.h
> @@ -129,6 +129,7 @@ EXT(ARB_shading_language_420pack, 
> ARB_shading_language_420pack
>  EXT(ARB_shading_language_packing, ARB_shading_language_packing   
> , GLL, GLC,  x ,  x , 2011)
>  EXT(ARB_shadow  , ARB_shadow 
> , GLL,  x ,  x ,  x , 2001)
>  EXT(ARB_sparse_buffer   , ARB_sparse_buffer  
> , GLL, GLC,  x ,  x , 2014)
> +EXT(ARB_spirv_extensions, ARB_spirv_extensions   
> ,  x,  GLC,  x ,  x , 2016)
>  EXT(ARB_stencil_texturing   , ARB_stencil_texturing  
> , GLL, GLC,  x ,  x , 2012)
>  EXT(ARB_sync, ARB_sync   
> , GLL, GLC,  x ,  x , 2003)
>  EXT(ARB_tessellation_shader , ARB_tessellation_shader
> ,  x , GLC,  x ,  x , 2009)
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> index ea8d932b182..c97ec9efde9 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -34,6 +34,7 @@
>  #include "get.h"
>  #include "macros.h"
>  #include "mtypes.h"
> +#include "spirvextensions.h"
>  #include "state.h"
>  #include "texcompress.h"
>  #include "texstate.h"
> @@ -1151,6 +1152,11 @@ find_custom_value(struct gl_context *ctx, const struct 
> value_desc *d, union valu
>   }
>}
>break;
> +
> +   /* ARB_spirv_extensions */
> +   case GL_NUM_SPIR_V_EXTENSIONS:
> +  v->value_int = _mesa_get_spirv_extension_count(ctx);
> +  break;
> }
>  }
>  
> diff --git a/src/mesa/main/get_hash_params.py 
> b/src/mesa/main/get_hash_params.py
> index 20ef6e4977a..4378cc1cabe 100644
> --- a/src/mesa/main/get_hash_params.py
> +++ b/src/mesa/main/get_hash_params.py
> @@ -378,6 +378,9 @@ descriptor=[
>  # GL_ARB_sampler_objects / GL 3.3 / GLES 3.0
>[ "SAMPLER_BINDING", "LOC_CUSTOM, TYPE_INT, GL_SAMPLER_BINDING, NO_EXTRA" 
> ],
>  
> +# GL_ARB_spirv_extensions
> +  [ "NUM_SPIR_V_EXTENSIONS", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
> +
>  # GL_ARB_sync
>[ "MAX_SERVER_WAIT_TIMEOUT", "CONTEXT_INT64(Const.MaxServerWaitTimeout), 
> 

Re: [Mesa-dev] [PATCH 10/24] spirv_extensions: add GL_ARB_spirv_extensions boilerplate

2017-11-16 Thread Emil Velikov
Hi Eduardo,

On 15 November 2017 at 13:22, Eduardo Lima Mitev  wrote:

> --- a/src/mapi/glapi/gen/gl_API.xml
> +++ b/src/mapi/glapi/gen/gl_API.xml
> @@ -8404,6 +8404,8 @@
>
>   xmlns:xi="http://www.w3.org/2001/XInclude"/>
>
Nit: Please mention the gap here - 191-193

> + xmlns:xi="http://www.w3.org/2001/XInclude"/>
> +
>  
>


> --- a/src/mesa/main/get_hash_params.py
> +++ b/src/mesa/main/get_hash_params.py
> @@ -378,6 +378,9 @@ descriptor=[
>  # GL_ARB_sampler_objects / GL 3.3 / GLES 3.0
>[ "SAMPLER_BINDING", "LOC_CUSTOM, TYPE_INT, GL_SAMPLER_BINDING, NO_EXTRA" 
> ],
>
> +# GL_ARB_spirv_extensions
> +  [ "NUM_SPIR_V_EXTENSIONS", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
> +
There should be a EXTRA_EXT(ARB_spirv_extensions) further up and the
NO_EXTRA will become extra_ARB_spirv_extensions

>  # GL_ARB_sync
>[ "MAX_SERVER_WAIT_TIMEOUT", "CONTEXT_INT64(Const.MaxServerWaitTimeout), 
> extra_ARB_sync" ],
>
> diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c
> index 4c805ca4d51..d87e29c15af 100644
> --- a/src/mesa/main/getstring.c
> +++ b/src/mesa/main/getstring.c
> @@ -32,6 +32,7 @@
>  #include "extensions.h"
>  #include "mtypes.h"
>  #include "macros.h"
> +#include "spirvextensions.h"
>
>  /**
>   * Return the string for a glGetString(GL_SHADING_LANGUAGE_VERSION) query.
> @@ -184,6 +185,12 @@ _mesa_GetStringi(GLenum name, GLuint index)
>   return (const GLubyte *) 0;
>}
>return _mesa_get_enabled_extension(ctx, index);
> +   case GL_SPIR_V_EXTENSIONS:
We should bail with GL_INVALID_ENUM when the extension is not available.

With the above and Eric's comments patches 1 and 10 are
Reviewed-by: Emil Velikov 

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


Re: [Mesa-dev] [PATCH 10/24] spirv_extensions: add GL_ARB_spirv_extensions boilerplate

2017-11-15 Thread Eric Engestrom
On Wednesday, 2017-11-15 14:22:13 +0100, Eduardo Lima Mitev wrote:
> From: Alejandro Piñeiro 
> 
> ---
>  src/mapi/glapi/gen/ARB_spirv_extensions.xml | 13 
>  src/mapi/glapi/gen/Makefile.am  |  1 +
>  src/mapi/glapi/gen/gl_API.xml   |  2 ++
>  src/mesa/Makefile.sources   |  2 ++
>  src/mesa/main/extensions_table.h|  1 +
>  src/mesa/main/get.c |  6 
>  src/mesa/main/get_hash_params.py|  3 ++
>  src/mesa/main/getstring.c   |  7 +
>  src/mesa/main/mtypes.h  |  1 +
>  src/mesa/main/spirvextensions.c | 42 +
>  src/mesa/main/spirvextensions.h | 49 
> +
>  11 files changed, 127 insertions(+)
>  create mode 100644 src/mapi/glapi/gen/ARB_spirv_extensions.xml
>  create mode 100644 src/mesa/main/spirvextensions.c
>  create mode 100644 src/mesa/main/spirvextensions.h
> 
> diff --git a/src/mapi/glapi/gen/ARB_spirv_extensions.xml 
> b/src/mapi/glapi/gen/ARB_spirv_extensions.xml
> new file mode 100644
> index 000..103393104c2
> --- /dev/null
> +++ b/src/mapi/glapi/gen/ARB_spirv_extensions.xml
> @@ -0,0 +1,13 @@
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
> index 35e37e95a9f..9a7a268adbf 100644
> --- a/src/mapi/glapi/gen/Makefile.am
> +++ b/src/mapi/glapi/gen/Makefile.am
> @@ -167,6 +167,7 @@ API_XML = \
>   ARB_shader_subroutine.xml \
>   ARB_shader_storage_buffer_object.xml \
>   ARB_sparse_buffer.xml \
> + ARB_spirv_extensions.xml \
>   ARB_sync.xml \
>   ARB_tessellation_shader.xml \
>   ARB_texture_barrier.xml \

For this and the other autotools hunk further down, please add to this
patch:

8<
diff --git a/src/mapi/glapi/gen/meson.build b/src/mapi/glapi/gen/meson.build
index 69ef57bc1460e8f92411..54d8d8076221b6c923c0 100644
--- a/src/mapi/glapi/gen/meson.build
+++ b/src/mapi/glapi/gen/meson.build
@@ -74,6 +74,7 @@ api_xml_files = files(
   'ARB_shader_subroutine.xml',
   'ARB_shader_storage_buffer_object.xml',
   'ARB_sparse_buffer.xml',
+  'ARB_spirv_extensions.xml',
   'ARB_sync.xml',
   'ARB_tessellation_shader.xml',
   'ARB_texture_barrier.xml',
diff --git a/src/mesa/meson.build b/src/mesa/meson.build
index b839fd0298189263d632..f20939f94b1e368e799d 100644
--- a/src/mesa/meson.build
+++ b/src/mesa/meson.build
@@ -243,6 +243,8 @@ files_libmesa_common = files(
   'main/shader_query.cpp',
   'main/shared.c',
   'main/shared.h',
+  'main/spirvextensions.c',
+  'main/spirvextensions.h',
   'main/state.c',
   'main/state.h',
   'main/stencil.c',
>8

> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
> index d3594cfe195..6b81160b5a1 100644
> --- a/src/mapi/glapi/gen/gl_API.xml
> +++ b/src/mapi/glapi/gen/gl_API.xml
> @@ -8404,6 +8404,8 @@
>  
>   xmlns:xi="http://www.w3.org/2001/XInclude"/>
>  
> + xmlns:xi="http://www.w3.org/2001/XInclude"/>
> +
>  
>  
>  
> diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources
> index e9680bf004c..944c8bcc812 100644
> --- a/src/mesa/Makefile.sources
> +++ b/src/mesa/Makefile.sources
> @@ -203,6 +203,8 @@ MAIN_FILES = \
>   main/shader_query.cpp \
>   main/shared.c \
>   main/shared.h \
> + main/spirvextensions.c \
> + main/spirvextensions.h \
>   main/state.c \
>   main/state.h \
>   main/stencil.c \
> diff --git a/src/mesa/main/extensions_table.h 
> b/src/mesa/main/extensions_table.h
> index ab15ceb9414..06deabd0640 100644
> --- a/src/mesa/main/extensions_table.h
> +++ b/src/mesa/main/extensions_table.h
> @@ -129,6 +129,7 @@ EXT(ARB_shading_language_420pack, 
> ARB_shading_language_420pack
>  EXT(ARB_shading_language_packing, ARB_shading_language_packing   
> , GLL, GLC,  x ,  x , 2011)
>  EXT(ARB_shadow  , ARB_shadow 
> , GLL,  x ,  x ,  x , 2001)
>  EXT(ARB_sparse_buffer   , ARB_sparse_buffer  
> , GLL, GLC,  x ,  x , 2014)
> +EXT(ARB_spirv_extensions, ARB_spirv_extensions   
> ,  x,  GLC,  x ,  x , 2016)
>  EXT(ARB_stencil_texturing   , ARB_stencil_texturing  
> , GLL, GLC,  x ,  x , 2012)
>  EXT(ARB_sync, ARB_sync   
> , GLL, GLC,  x ,  x , 2003)
>  EXT(ARB_tessellation_shader , ARB_tessellation_shader
> ,  x , GLC,  x ,  x , 2009)
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> index ea8d932b182..c97ec9efde9 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -34,6 +34,7 @@
>  #include "get.h"
>  #include "macros.h"
>  #include "mtypes.h"
> +#include "spirvextensions.h"
>  #include "state.h"
>  #include "texcompress.h"
>  

[Mesa-dev] [PATCH 10/24] spirv_extensions: add GL_ARB_spirv_extensions boilerplate

2017-11-15 Thread Eduardo Lima Mitev
From: Alejandro Piñeiro 

---
 src/mapi/glapi/gen/ARB_spirv_extensions.xml | 13 
 src/mapi/glapi/gen/Makefile.am  |  1 +
 src/mapi/glapi/gen/gl_API.xml   |  2 ++
 src/mesa/Makefile.sources   |  2 ++
 src/mesa/main/extensions_table.h|  1 +
 src/mesa/main/get.c |  6 
 src/mesa/main/get_hash_params.py|  3 ++
 src/mesa/main/getstring.c   |  7 +
 src/mesa/main/mtypes.h  |  1 +
 src/mesa/main/spirvextensions.c | 42 +
 src/mesa/main/spirvextensions.h | 49 +
 11 files changed, 127 insertions(+)
 create mode 100644 src/mapi/glapi/gen/ARB_spirv_extensions.xml
 create mode 100644 src/mesa/main/spirvextensions.c
 create mode 100644 src/mesa/main/spirvextensions.h

diff --git a/src/mapi/glapi/gen/ARB_spirv_extensions.xml 
b/src/mapi/glapi/gen/ARB_spirv_extensions.xml
new file mode 100644
index 000..103393104c2
--- /dev/null
+++ b/src/mapi/glapi/gen/ARB_spirv_extensions.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
index 35e37e95a9f..9a7a268adbf 100644
--- a/src/mapi/glapi/gen/Makefile.am
+++ b/src/mapi/glapi/gen/Makefile.am
@@ -167,6 +167,7 @@ API_XML = \
ARB_shader_subroutine.xml \
ARB_shader_storage_buffer_object.xml \
ARB_sparse_buffer.xml \
+   ARB_spirv_extensions.xml \
ARB_sync.xml \
ARB_tessellation_shader.xml \
ARB_texture_barrier.xml \
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index d3594cfe195..6b81160b5a1 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8404,6 +8404,8 @@
 
 http://www.w3.org/2001/XInclude"/>
 
+http://www.w3.org/2001/XInclude"/>
+
 
 
 
diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources
index e9680bf004c..944c8bcc812 100644
--- a/src/mesa/Makefile.sources
+++ b/src/mesa/Makefile.sources
@@ -203,6 +203,8 @@ MAIN_FILES = \
main/shader_query.cpp \
main/shared.c \
main/shared.h \
+   main/spirvextensions.c \
+   main/spirvextensions.h \
main/state.c \
main/state.h \
main/stencil.c \
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index ab15ceb9414..06deabd0640 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -129,6 +129,7 @@ EXT(ARB_shading_language_420pack, 
ARB_shading_language_420pack
 EXT(ARB_shading_language_packing, ARB_shading_language_packing 
  , GLL, GLC,  x ,  x , 2011)
 EXT(ARB_shadow  , ARB_shadow   
  , GLL,  x ,  x ,  x , 2001)
 EXT(ARB_sparse_buffer   , ARB_sparse_buffer
  , GLL, GLC,  x ,  x , 2014)
+EXT(ARB_spirv_extensions, ARB_spirv_extensions 
  ,  x,  GLC,  x ,  x , 2016)
 EXT(ARB_stencil_texturing   , ARB_stencil_texturing
  , GLL, GLC,  x ,  x , 2012)
 EXT(ARB_sync, ARB_sync 
  , GLL, GLC,  x ,  x , 2003)
 EXT(ARB_tessellation_shader , ARB_tessellation_shader  
  ,  x , GLC,  x ,  x , 2009)
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index ea8d932b182..c97ec9efde9 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -34,6 +34,7 @@
 #include "get.h"
 #include "macros.h"
 #include "mtypes.h"
+#include "spirvextensions.h"
 #include "state.h"
 #include "texcompress.h"
 #include "texstate.h"
@@ -1151,6 +1152,11 @@ find_custom_value(struct gl_context *ctx, const struct 
value_desc *d, union valu
  }
   }
   break;
+
+   /* ARB_spirv_extensions */
+   case GL_NUM_SPIR_V_EXTENSIONS:
+  v->value_int = _mesa_get_spirv_extension_count(ctx);
+  break;
}
 }
 
diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index 20ef6e4977a..4378cc1cabe 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -378,6 +378,9 @@ descriptor=[
 # GL_ARB_sampler_objects / GL 3.3 / GLES 3.0
   [ "SAMPLER_BINDING", "LOC_CUSTOM, TYPE_INT, GL_SAMPLER_BINDING, NO_EXTRA" ],
 
+# GL_ARB_spirv_extensions
+  [ "NUM_SPIR_V_EXTENSIONS", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
+
 # GL_ARB_sync
   [ "MAX_SERVER_WAIT_TIMEOUT", "CONTEXT_INT64(Const.MaxServerWaitTimeout), 
extra_ARB_sync" ],
 
diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c
index 4c805ca4d51..d87e29c15af 100644
--- a/src/mesa/main/getstring.c
+++ b/src/mesa/main/getstring.c
@@ -32,6 +32,7 @@
 #include "extensions.h"
 #include "mtypes.h"
 #include "macros.h"
+#include "spirvextensions.h"
 
 /**
  * Return the string for a glGetString(GL_SHADING_LANGUAGE_VERSION) query.