Re: [Mesa-dev] [PATCH 1/2] mesa: add support for GL_INTEL_conservative_rasterization

2016-12-07 Thread Ilia Mirkin
On Wed, Dec 7, 2016 at 12:04 PM, Ilia Mirkin  wrote:
> On Wed, Dec 7, 2016 at 10:31 AM, Ilia Mirkin  wrote:
>> On Wed, Dec 7, 2016 at 10:25 AM, Lionel Landwerlin
>>  wrote:
>>> On 07/12/16 14:55, Ilia Mirkin wrote:

 On Thu, Dec 1, 2016 at 10:56 AM, Lionel Landwerlin
  wrote:
>
> Signed-off-by: Lionel Landwerlin 
> ---
>   src/compiler/glsl/ast.h  |  5 
>   src/compiler/glsl/ast_to_hir.cpp |  5 
>   src/compiler/glsl/ast_type.cpp   | 16 +++-
>   src/compiler/glsl/glsl_parser.yy | 34
> ++
>   src/compiler/glsl/glsl_parser_extras.cpp |  4 +++
>   src/compiler/glsl/glsl_parser_extras.h   |  4 +++
>   src/compiler/glsl/linker.cpp |  3 +++
>   src/compiler/shader_info.h   |  6 +
>   src/mesa/main/api_validate.c | 42
> 
>   src/mesa/main/enable.c   | 12 +
>   src/mesa/main/extensions_table.h |  1 +
>   src/mesa/main/mtypes.h   |  3 +++
>   src/mesa/main/shaderapi.c|  1 +
>   13 files changed, 130 insertions(+), 6 deletions(-)
>
> diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h
> index df3a744..0e32c36 100644
> --- a/src/compiler/glsl/ast.h
> +++ b/src/compiler/glsl/ast.h
> @@ -610,6 +610,11 @@ struct ast_type_qualifier {
> * Flag set if GL_ARB_post_depth_coverage layout qualifier is
> used.
> */
>unsigned post_depth_coverage:1;
> + /**
> +  * Flag set if GL_INTEL_conservartive_rasterization layout
> qualifier
> +  * is used.
> +  */
> + unsigned inner_coverage:1;
> }
> /** \brief Set of flags, accessed by name. */
> q;
> diff --git a/src/compiler/glsl/ast_to_hir.cpp
> b/src/compiler/glsl/ast_to_hir.cpp
> index 2434ce5..1e14d27 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -3633,6 +3633,11 @@ apply_layout_qualifier_to_variable(const struct
> ast_type_qualifier *qual,
>  "valid in fragment shader input layout
> declaration.");
>  }
>
> +   if (qual->flags.q.inner_coverage) {
> +  _mesa_glsl_error(loc, state, "inner_coverage layout qualifier only
> "
> +   "valid in fragment shader input layout
> declaration.");
> +   }
> +
>  if (qual->flags.q.post_depth_coverage) {
> _mesa_glsl_error(loc, state, "post_depth_coverage layout
> qualifier only "
>  "valid in fragment shader input layout
> declaration.");
> diff --git a/src/compiler/glsl/ast_type.cpp
> b/src/compiler/glsl/ast_type.cpp
> index aa1ae7e..d68e6e2 100644
> --- a/src/compiler/glsl/ast_type.cpp
> +++ b/src/compiler/glsl/ast_type.cpp
> @@ -579,6 +579,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE
> *loc,
> break;
>  case MESA_SHADER_FRAGMENT:
> valid_in_mask.flags.q.early_fragment_tests = 1;
> +  valid_in_mask.flags.q.inner_coverage = 1;
> valid_in_mask.flags.q.post_depth_coverage = 1;
> break;
>  case MESA_SHADER_COMPUTE:
> @@ -634,11 +635,23 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE
> *loc,
> state->in_qualifier->flags.q.early_fragment_tests = false;
>  }
>
> +   if (state->in_qualifier->flags.q.inner_coverage) {
> +  state->fs_inner_coverage = true;
> +  state->in_qualifier->flags.q.inner_coverage = false;
> +   }
> +
>  if (state->in_qualifier->flags.q.post_depth_coverage) {
> state->fs_post_depth_coverage = true;
> state->in_qualifier->flags.q.post_depth_coverage = false;
>  }
>
> +   if (state->fs_inner_coverage && state->fs_post_depth_coverage) {
> +  _mesa_glsl_error(loc, state,
> +   "inner_coverage & post_depth_coverage layout
> qualifiers "
> +   "are mutally exclusives");
> +  r = false;
> +   }
> +
>  /* We allow the creation of multiple cs_input_layout nodes.
> Coherence among
>   * all existing nodes is checked later, when the AST node is
> transformed
>   * into HIR.
> @@ -707,7 +720,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
>   "%s '%s':"
>   "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
>   "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
> -

Re: [Mesa-dev] [PATCH 1/2] mesa: add support for GL_INTEL_conservative_rasterization

2016-12-07 Thread Ilia Mirkin
On Wed, Dec 7, 2016 at 10:31 AM, Ilia Mirkin  wrote:
> On Wed, Dec 7, 2016 at 10:25 AM, Lionel Landwerlin
>  wrote:
>> On 07/12/16 14:55, Ilia Mirkin wrote:
>>>
>>> On Thu, Dec 1, 2016 at 10:56 AM, Lionel Landwerlin
>>>  wrote:

 Signed-off-by: Lionel Landwerlin 
 ---
   src/compiler/glsl/ast.h  |  5 
   src/compiler/glsl/ast_to_hir.cpp |  5 
   src/compiler/glsl/ast_type.cpp   | 16 +++-
   src/compiler/glsl/glsl_parser.yy | 34
 ++
   src/compiler/glsl/glsl_parser_extras.cpp |  4 +++
   src/compiler/glsl/glsl_parser_extras.h   |  4 +++
   src/compiler/glsl/linker.cpp |  3 +++
   src/compiler/shader_info.h   |  6 +
   src/mesa/main/api_validate.c | 42
 
   src/mesa/main/enable.c   | 12 +
   src/mesa/main/extensions_table.h |  1 +
   src/mesa/main/mtypes.h   |  3 +++
   src/mesa/main/shaderapi.c|  1 +
   13 files changed, 130 insertions(+), 6 deletions(-)

 diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h
 index df3a744..0e32c36 100644
 --- a/src/compiler/glsl/ast.h
 +++ b/src/compiler/glsl/ast.h
 @@ -610,6 +610,11 @@ struct ast_type_qualifier {
 * Flag set if GL_ARB_post_depth_coverage layout qualifier is
 used.
 */
unsigned post_depth_coverage:1;
 + /**
 +  * Flag set if GL_INTEL_conservartive_rasterization layout
 qualifier
 +  * is used.
 +  */
 + unsigned inner_coverage:1;
 }
 /** \brief Set of flags, accessed by name. */
 q;
 diff --git a/src/compiler/glsl/ast_to_hir.cpp
 b/src/compiler/glsl/ast_to_hir.cpp
 index 2434ce5..1e14d27 100644
 --- a/src/compiler/glsl/ast_to_hir.cpp
 +++ b/src/compiler/glsl/ast_to_hir.cpp
 @@ -3633,6 +3633,11 @@ apply_layout_qualifier_to_variable(const struct
 ast_type_qualifier *qual,
  "valid in fragment shader input layout
 declaration.");
  }

 +   if (qual->flags.q.inner_coverage) {
 +  _mesa_glsl_error(loc, state, "inner_coverage layout qualifier only
 "
 +   "valid in fragment shader input layout
 declaration.");
 +   }
 +
  if (qual->flags.q.post_depth_coverage) {
 _mesa_glsl_error(loc, state, "post_depth_coverage layout
 qualifier only "
  "valid in fragment shader input layout
 declaration.");
 diff --git a/src/compiler/glsl/ast_type.cpp
 b/src/compiler/glsl/ast_type.cpp
 index aa1ae7e..d68e6e2 100644
 --- a/src/compiler/glsl/ast_type.cpp
 +++ b/src/compiler/glsl/ast_type.cpp
 @@ -579,6 +579,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE
 *loc,
 break;
  case MESA_SHADER_FRAGMENT:
 valid_in_mask.flags.q.early_fragment_tests = 1;
 +  valid_in_mask.flags.q.inner_coverage = 1;
 valid_in_mask.flags.q.post_depth_coverage = 1;
 break;
  case MESA_SHADER_COMPUTE:
 @@ -634,11 +635,23 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE
 *loc,
 state->in_qualifier->flags.q.early_fragment_tests = false;
  }

 +   if (state->in_qualifier->flags.q.inner_coverage) {
 +  state->fs_inner_coverage = true;
 +  state->in_qualifier->flags.q.inner_coverage = false;
 +   }
 +
  if (state->in_qualifier->flags.q.post_depth_coverage) {
 state->fs_post_depth_coverage = true;
 state->in_qualifier->flags.q.post_depth_coverage = false;
  }

 +   if (state->fs_inner_coverage && state->fs_post_depth_coverage) {
 +  _mesa_glsl_error(loc, state,
 +   "inner_coverage & post_depth_coverage layout
 qualifiers "
 +   "are mutally exclusives");
 +  r = false;
 +   }
 +
  /* We allow the creation of multiple cs_input_layout nodes.
 Coherence among
   * all existing nodes is checked later, when the AST node is
 transformed
   * into HIR.
 @@ -707,7 +720,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
   "%s '%s':"
   "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
   "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
 -"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
 +"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
   message, name,
   bad.flags.q.invariant ? " invariant" : "",

Re: [Mesa-dev] [PATCH 1/2] mesa: add support for GL_INTEL_conservative_rasterization

2016-12-07 Thread Ilia Mirkin
On Wed, Dec 7, 2016 at 10:25 AM, Lionel Landwerlin
 wrote:
> On 07/12/16 14:55, Ilia Mirkin wrote:
>>
>> On Thu, Dec 1, 2016 at 10:56 AM, Lionel Landwerlin
>>  wrote:
>>>
>>> Signed-off-by: Lionel Landwerlin 
>>> ---
>>>   src/compiler/glsl/ast.h  |  5 
>>>   src/compiler/glsl/ast_to_hir.cpp |  5 
>>>   src/compiler/glsl/ast_type.cpp   | 16 +++-
>>>   src/compiler/glsl/glsl_parser.yy | 34
>>> ++
>>>   src/compiler/glsl/glsl_parser_extras.cpp |  4 +++
>>>   src/compiler/glsl/glsl_parser_extras.h   |  4 +++
>>>   src/compiler/glsl/linker.cpp |  3 +++
>>>   src/compiler/shader_info.h   |  6 +
>>>   src/mesa/main/api_validate.c | 42
>>> 
>>>   src/mesa/main/enable.c   | 12 +
>>>   src/mesa/main/extensions_table.h |  1 +
>>>   src/mesa/main/mtypes.h   |  3 +++
>>>   src/mesa/main/shaderapi.c|  1 +
>>>   13 files changed, 130 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h
>>> index df3a744..0e32c36 100644
>>> --- a/src/compiler/glsl/ast.h
>>> +++ b/src/compiler/glsl/ast.h
>>> @@ -610,6 +610,11 @@ struct ast_type_qualifier {
>>> * Flag set if GL_ARB_post_depth_coverage layout qualifier is
>>> used.
>>> */
>>>unsigned post_depth_coverage:1;
>>> + /**
>>> +  * Flag set if GL_INTEL_conservartive_rasterization layout
>>> qualifier
>>> +  * is used.
>>> +  */
>>> + unsigned inner_coverage:1;
>>> }
>>> /** \brief Set of flags, accessed by name. */
>>> q;
>>> diff --git a/src/compiler/glsl/ast_to_hir.cpp
>>> b/src/compiler/glsl/ast_to_hir.cpp
>>> index 2434ce5..1e14d27 100644
>>> --- a/src/compiler/glsl/ast_to_hir.cpp
>>> +++ b/src/compiler/glsl/ast_to_hir.cpp
>>> @@ -3633,6 +3633,11 @@ apply_layout_qualifier_to_variable(const struct
>>> ast_type_qualifier *qual,
>>>  "valid in fragment shader input layout
>>> declaration.");
>>>  }
>>>
>>> +   if (qual->flags.q.inner_coverage) {
>>> +  _mesa_glsl_error(loc, state, "inner_coverage layout qualifier only
>>> "
>>> +   "valid in fragment shader input layout
>>> declaration.");
>>> +   }
>>> +
>>>  if (qual->flags.q.post_depth_coverage) {
>>> _mesa_glsl_error(loc, state, "post_depth_coverage layout
>>> qualifier only "
>>>  "valid in fragment shader input layout
>>> declaration.");
>>> diff --git a/src/compiler/glsl/ast_type.cpp
>>> b/src/compiler/glsl/ast_type.cpp
>>> index aa1ae7e..d68e6e2 100644
>>> --- a/src/compiler/glsl/ast_type.cpp
>>> +++ b/src/compiler/glsl/ast_type.cpp
>>> @@ -579,6 +579,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE
>>> *loc,
>>> break;
>>>  case MESA_SHADER_FRAGMENT:
>>> valid_in_mask.flags.q.early_fragment_tests = 1;
>>> +  valid_in_mask.flags.q.inner_coverage = 1;
>>> valid_in_mask.flags.q.post_depth_coverage = 1;
>>> break;
>>>  case MESA_SHADER_COMPUTE:
>>> @@ -634,11 +635,23 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE
>>> *loc,
>>> state->in_qualifier->flags.q.early_fragment_tests = false;
>>>  }
>>>
>>> +   if (state->in_qualifier->flags.q.inner_coverage) {
>>> +  state->fs_inner_coverage = true;
>>> +  state->in_qualifier->flags.q.inner_coverage = false;
>>> +   }
>>> +
>>>  if (state->in_qualifier->flags.q.post_depth_coverage) {
>>> state->fs_post_depth_coverage = true;
>>> state->in_qualifier->flags.q.post_depth_coverage = false;
>>>  }
>>>
>>> +   if (state->fs_inner_coverage && state->fs_post_depth_coverage) {
>>> +  _mesa_glsl_error(loc, state,
>>> +   "inner_coverage & post_depth_coverage layout
>>> qualifiers "
>>> +   "are mutally exclusives");
>>> +  r = false;
>>> +   }
>>> +
>>>  /* We allow the creation of multiple cs_input_layout nodes.
>>> Coherence among
>>>   * all existing nodes is checked later, when the AST node is
>>> transformed
>>>   * into HIR.
>>> @@ -707,7 +720,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
>>>   "%s '%s':"
>>>   "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
>>>   "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
>>> -"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
>>> +"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
>>>   message, name,
>>>   bad.flags.q.invariant ? " invariant" : "",
>>>   bad.flags.q.precise ? " precise" : "",
>>> @@ -768,6 +781,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
>>>   bad.flags.q.vertices ? " 

Re: [Mesa-dev] [PATCH 1/2] mesa: add support for GL_INTEL_conservative_rasterization

2016-12-07 Thread Lionel Landwerlin

On 07/12/16 14:55, Ilia Mirkin wrote:

On Thu, Dec 1, 2016 at 10:56 AM, Lionel Landwerlin
 wrote:

Signed-off-by: Lionel Landwerlin 
---
  src/compiler/glsl/ast.h  |  5 
  src/compiler/glsl/ast_to_hir.cpp |  5 
  src/compiler/glsl/ast_type.cpp   | 16 +++-
  src/compiler/glsl/glsl_parser.yy | 34 ++
  src/compiler/glsl/glsl_parser_extras.cpp |  4 +++
  src/compiler/glsl/glsl_parser_extras.h   |  4 +++
  src/compiler/glsl/linker.cpp |  3 +++
  src/compiler/shader_info.h   |  6 +
  src/mesa/main/api_validate.c | 42 
  src/mesa/main/enable.c   | 12 +
  src/mesa/main/extensions_table.h |  1 +
  src/mesa/main/mtypes.h   |  3 +++
  src/mesa/main/shaderapi.c|  1 +
  13 files changed, 130 insertions(+), 6 deletions(-)

diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h
index df3a744..0e32c36 100644
--- a/src/compiler/glsl/ast.h
+++ b/src/compiler/glsl/ast.h
@@ -610,6 +610,11 @@ struct ast_type_qualifier {
* Flag set if GL_ARB_post_depth_coverage layout qualifier is used.
*/
   unsigned post_depth_coverage:1;
+ /**
+  * Flag set if GL_INTEL_conservartive_rasterization layout qualifier
+  * is used.
+  */
+ unsigned inner_coverage:1;
}
/** \brief Set of flags, accessed by name. */
q;
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index 2434ce5..1e14d27 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -3633,6 +3633,11 @@ apply_layout_qualifier_to_variable(const struct 
ast_type_qualifier *qual,
 "valid in fragment shader input layout declaration.");
 }

+   if (qual->flags.q.inner_coverage) {
+  _mesa_glsl_error(loc, state, "inner_coverage layout qualifier only "
+   "valid in fragment shader input layout declaration.");
+   }
+
 if (qual->flags.q.post_depth_coverage) {
_mesa_glsl_error(loc, state, "post_depth_coverage layout qualifier only 
"
 "valid in fragment shader input layout declaration.");
diff --git a/src/compiler/glsl/ast_type.cpp b/src/compiler/glsl/ast_type.cpp
index aa1ae7e..d68e6e2 100644
--- a/src/compiler/glsl/ast_type.cpp
+++ b/src/compiler/glsl/ast_type.cpp
@@ -579,6 +579,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE *loc,
break;
 case MESA_SHADER_FRAGMENT:
valid_in_mask.flags.q.early_fragment_tests = 1;
+  valid_in_mask.flags.q.inner_coverage = 1;
valid_in_mask.flags.q.post_depth_coverage = 1;
break;
 case MESA_SHADER_COMPUTE:
@@ -634,11 +635,23 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc,
state->in_qualifier->flags.q.early_fragment_tests = false;
 }

+   if (state->in_qualifier->flags.q.inner_coverage) {
+  state->fs_inner_coverage = true;
+  state->in_qualifier->flags.q.inner_coverage = false;
+   }
+
 if (state->in_qualifier->flags.q.post_depth_coverage) {
state->fs_post_depth_coverage = true;
state->in_qualifier->flags.q.post_depth_coverage = false;
 }

+   if (state->fs_inner_coverage && state->fs_post_depth_coverage) {
+  _mesa_glsl_error(loc, state,
+   "inner_coverage & post_depth_coverage layout qualifiers 
"
+   "are mutally exclusives");
+  r = false;
+   }
+
 /* We allow the creation of multiple cs_input_layout nodes. Coherence among
  * all existing nodes is checked later, when the AST node is transformed
  * into HIR.
@@ -707,7 +720,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
  "%s '%s':"
  "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
  "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
-"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
+"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
  message, name,
  bad.flags.q.invariant ? " invariant" : "",
  bad.flags.q.precise ? " precise" : "",
@@ -768,6 +781,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
  bad.flags.q.vertices ? " vertices" : "",
  bad.flags.q.subroutine ? " subroutine" : "",
  bad.flags.q.subroutine_def ? " subroutine_def" : "",
+bad.flags.q.inner_coverage ? " inner_coverage" : "",
  bad.flags.q.post_depth_coverage ? " post_depth_coverage" : 
"");
 return false;
  }
diff --git a/src/compiler/glsl/glsl_parser.yy b/src/compiler/glsl/glsl_parser.yy
index 09b7e79..e3893d5 100644
--- a/src/compiler/glsl/glsl_parser.yy
+++ b/src/compiler/glsl/glsl_parser.yy
@@ -1372,9 +1372,10 @@ 

Re: [Mesa-dev] [PATCH 1/2] mesa: add support for GL_INTEL_conservative_rasterization

2016-12-07 Thread Ilia Mirkin
On Thu, Dec 1, 2016 at 10:56 AM, Lionel Landwerlin
 wrote:
> Signed-off-by: Lionel Landwerlin 
> ---
>  src/compiler/glsl/ast.h  |  5 
>  src/compiler/glsl/ast_to_hir.cpp |  5 
>  src/compiler/glsl/ast_type.cpp   | 16 +++-
>  src/compiler/glsl/glsl_parser.yy | 34 ++
>  src/compiler/glsl/glsl_parser_extras.cpp |  4 +++
>  src/compiler/glsl/glsl_parser_extras.h   |  4 +++
>  src/compiler/glsl/linker.cpp |  3 +++
>  src/compiler/shader_info.h   |  6 +
>  src/mesa/main/api_validate.c | 42 
> 
>  src/mesa/main/enable.c   | 12 +
>  src/mesa/main/extensions_table.h |  1 +
>  src/mesa/main/mtypes.h   |  3 +++
>  src/mesa/main/shaderapi.c|  1 +
>  13 files changed, 130 insertions(+), 6 deletions(-)
>
> diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h
> index df3a744..0e32c36 100644
> --- a/src/compiler/glsl/ast.h
> +++ b/src/compiler/glsl/ast.h
> @@ -610,6 +610,11 @@ struct ast_type_qualifier {
>* Flag set if GL_ARB_post_depth_coverage layout qualifier is used.
>*/
>   unsigned post_depth_coverage:1;
> + /**
> +  * Flag set if GL_INTEL_conservartive_rasterization layout qualifier
> +  * is used.
> +  */
> + unsigned inner_coverage:1;
>}
>/** \brief Set of flags, accessed by name. */
>q;
> diff --git a/src/compiler/glsl/ast_to_hir.cpp 
> b/src/compiler/glsl/ast_to_hir.cpp
> index 2434ce5..1e14d27 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -3633,6 +3633,11 @@ apply_layout_qualifier_to_variable(const struct 
> ast_type_qualifier *qual,
> "valid in fragment shader input layout declaration.");
> }
>
> +   if (qual->flags.q.inner_coverage) {
> +  _mesa_glsl_error(loc, state, "inner_coverage layout qualifier only "
> +   "valid in fragment shader input layout declaration.");
> +   }
> +
> if (qual->flags.q.post_depth_coverage) {
>_mesa_glsl_error(loc, state, "post_depth_coverage layout qualifier 
> only "
> "valid in fragment shader input layout declaration.");
> diff --git a/src/compiler/glsl/ast_type.cpp b/src/compiler/glsl/ast_type.cpp
> index aa1ae7e..d68e6e2 100644
> --- a/src/compiler/glsl/ast_type.cpp
> +++ b/src/compiler/glsl/ast_type.cpp
> @@ -579,6 +579,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE *loc,
>break;
> case MESA_SHADER_FRAGMENT:
>valid_in_mask.flags.q.early_fragment_tests = 1;
> +  valid_in_mask.flags.q.inner_coverage = 1;
>valid_in_mask.flags.q.post_depth_coverage = 1;
>break;
> case MESA_SHADER_COMPUTE:
> @@ -634,11 +635,23 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE 
> *loc,
>state->in_qualifier->flags.q.early_fragment_tests = false;
> }
>
> +   if (state->in_qualifier->flags.q.inner_coverage) {
> +  state->fs_inner_coverage = true;
> +  state->in_qualifier->flags.q.inner_coverage = false;
> +   }
> +
> if (state->in_qualifier->flags.q.post_depth_coverage) {
>state->fs_post_depth_coverage = true;
>state->in_qualifier->flags.q.post_depth_coverage = false;
> }
>
> +   if (state->fs_inner_coverage && state->fs_post_depth_coverage) {
> +  _mesa_glsl_error(loc, state,
> +   "inner_coverage & post_depth_coverage layout 
> qualifiers "
> +   "are mutally exclusives");
> +  r = false;
> +   }
> +
> /* We allow the creation of multiple cs_input_layout nodes. Coherence 
> among
>  * all existing nodes is checked later, when the AST node is transformed
>  * into HIR.
> @@ -707,7 +720,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
>  "%s '%s':"
>  "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
>  "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
> -"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
> +"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
>  message, name,
>  bad.flags.q.invariant ? " invariant" : "",
>  bad.flags.q.precise ? " precise" : "",
> @@ -768,6 +781,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
>  bad.flags.q.vertices ? " vertices" : "",
>  bad.flags.q.subroutine ? " subroutine" : "",
>  bad.flags.q.subroutine_def ? " subroutine_def" : "",
> +bad.flags.q.inner_coverage ? " inner_coverage" : "",
>  bad.flags.q.post_depth_coverage ? " post_depth_coverage" 
> : "");
> return false;
>  }
> diff --git a/src/compiler/glsl/glsl_parser.yy 
> b/src/compiler/glsl/glsl_parser.yy

Re: [Mesa-dev] [PATCH 1/2] mesa: add support for GL_INTEL_conservative_rasterization

2016-12-01 Thread Ilia Mirkin
Ah, I see. The difference is that it exists, unlike the ARB one :) I was
confusing with the NV variant.

On Dec 1, 2016 2:10 PM, "Ilia Mirkin"  wrote:

Is this different from the arb variant?

On Dec 1, 2016 10:56 AM, "Lionel Landwerlin" 
wrote:

> Signed-off-by: Lionel Landwerlin 
> ---
>  src/compiler/glsl/ast.h  |  5 
>  src/compiler/glsl/ast_to_hir.cpp |  5 
>  src/compiler/glsl/ast_type.cpp   | 16 +++-
>  src/compiler/glsl/glsl_parser.yy | 34 ++
>  src/compiler/glsl/glsl_parser_extras.cpp |  4 +++
>  src/compiler/glsl/glsl_parser_extras.h   |  4 +++
>  src/compiler/glsl/linker.cpp |  3 +++
>  src/compiler/shader_info.h   |  6 +
>  src/mesa/main/api_validate.c | 42
> 
>  src/mesa/main/enable.c   | 12 +
>  src/mesa/main/extensions_table.h |  1 +
>  src/mesa/main/mtypes.h   |  3 +++
>  src/mesa/main/shaderapi.c|  1 +
>  13 files changed, 130 insertions(+), 6 deletions(-)
>
> diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h
> index df3a744..0e32c36 100644
> --- a/src/compiler/glsl/ast.h
> +++ b/src/compiler/glsl/ast.h
> @@ -610,6 +610,11 @@ struct ast_type_qualifier {
>* Flag set if GL_ARB_post_depth_coverage layout qualifier is
> used.
>*/
>   unsigned post_depth_coverage:1;
> + /**
> +  * Flag set if GL_INTEL_conservartive_rasterization layout
> qualifier
> +  * is used.
> +  */
> + unsigned inner_coverage:1;
>}
>/** \brief Set of flags, accessed by name. */
>q;
> diff --git a/src/compiler/glsl/ast_to_hir.cpp
> b/src/compiler/glsl/ast_to_hir.cpp
> index 2434ce5..1e14d27 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -3633,6 +3633,11 @@ apply_layout_qualifier_to_variable(const struct
> ast_type_qualifier *qual,
> "valid in fragment shader input layout
> declaration.");
> }
>
> +   if (qual->flags.q.inner_coverage) {
> +  _mesa_glsl_error(loc, state, "inner_coverage layout qualifier only "
> +   "valid in fragment shader input layout
> declaration.");
> +   }
> +
> if (qual->flags.q.post_depth_coverage) {
>_mesa_glsl_error(loc, state, "post_depth_coverage layout qualifier
> only "
> "valid in fragment shader input layout
> declaration.");
> diff --git a/src/compiler/glsl/ast_type.cpp b/src/compiler/glsl/ast_type.c
> pp
> index aa1ae7e..d68e6e2 100644
> --- a/src/compiler/glsl/ast_type.cpp
> +++ b/src/compiler/glsl/ast_type.cpp
> @@ -579,6 +579,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE
> *loc,
>break;
> case MESA_SHADER_FRAGMENT:
>valid_in_mask.flags.q.early_fragment_tests = 1;
> +  valid_in_mask.flags.q.inner_coverage = 1;
>valid_in_mask.flags.q.post_depth_coverage = 1;
>break;
> case MESA_SHADER_COMPUTE:
> @@ -634,11 +635,23 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE
> *loc,
>state->in_qualifier->flags.q.early_fragment_tests = false;
> }
>
> +   if (state->in_qualifier->flags.q.inner_coverage) {
> +  state->fs_inner_coverage = true;
> +  state->in_qualifier->flags.q.inner_coverage = false;
> +   }
> +
> if (state->in_qualifier->flags.q.post_depth_coverage) {
>state->fs_post_depth_coverage = true;
>state->in_qualifier->flags.q.post_depth_coverage = false;
> }
>
> +   if (state->fs_inner_coverage && state->fs_post_depth_coverage) {
> +  _mesa_glsl_error(loc, state,
> +   "inner_coverage & post_depth_coverage layout
> qualifiers "
> +   "are mutally exclusives");
> +  r = false;
> +   }
> +
> /* We allow the creation of multiple cs_input_layout nodes. Coherence
> among
>  * all existing nodes is checked later, when the AST node is
> transformed
>  * into HIR.
> @@ -707,7 +720,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
>  "%s '%s':"
>  "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
>  "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
> -"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
> +"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
>  message, name,
>  bad.flags.q.invariant ? " invariant" : "",
>  bad.flags.q.precise ? " precise" : "",
> @@ -768,6 +781,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
>  bad.flags.q.vertices ? " vertices" : "",
>  bad.flags.q.subroutine ? " subroutine" : "",
>  bad.flags.q.subroutine_def ? " subroutine_def" : "",
> +bad.flags.q.inner_coverage ? " 

Re: [Mesa-dev] [PATCH 1/2] mesa: add support for GL_INTEL_conservative_rasterization

2016-12-01 Thread Ilia Mirkin
Is this different from the arb variant?

On Dec 1, 2016 10:56 AM, "Lionel Landwerlin" 
wrote:

> Signed-off-by: Lionel Landwerlin 
> ---
>  src/compiler/glsl/ast.h  |  5 
>  src/compiler/glsl/ast_to_hir.cpp |  5 
>  src/compiler/glsl/ast_type.cpp   | 16 +++-
>  src/compiler/glsl/glsl_parser.yy | 34 ++
>  src/compiler/glsl/glsl_parser_extras.cpp |  4 +++
>  src/compiler/glsl/glsl_parser_extras.h   |  4 +++
>  src/compiler/glsl/linker.cpp |  3 +++
>  src/compiler/shader_info.h   |  6 +
>  src/mesa/main/api_validate.c | 42
> 
>  src/mesa/main/enable.c   | 12 +
>  src/mesa/main/extensions_table.h |  1 +
>  src/mesa/main/mtypes.h   |  3 +++
>  src/mesa/main/shaderapi.c|  1 +
>  13 files changed, 130 insertions(+), 6 deletions(-)
>
> diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h
> index df3a744..0e32c36 100644
> --- a/src/compiler/glsl/ast.h
> +++ b/src/compiler/glsl/ast.h
> @@ -610,6 +610,11 @@ struct ast_type_qualifier {
>* Flag set if GL_ARB_post_depth_coverage layout qualifier is
> used.
>*/
>   unsigned post_depth_coverage:1;
> + /**
> +  * Flag set if GL_INTEL_conservartive_rasterization layout
> qualifier
> +  * is used.
> +  */
> + unsigned inner_coverage:1;
>}
>/** \brief Set of flags, accessed by name. */
>q;
> diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_
> hir.cpp
> index 2434ce5..1e14d27 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -3633,6 +3633,11 @@ apply_layout_qualifier_to_variable(const struct
> ast_type_qualifier *qual,
> "valid in fragment shader input layout
> declaration.");
> }
>
> +   if (qual->flags.q.inner_coverage) {
> +  _mesa_glsl_error(loc, state, "inner_coverage layout qualifier only "
> +   "valid in fragment shader input layout
> declaration.");
> +   }
> +
> if (qual->flags.q.post_depth_coverage) {
>_mesa_glsl_error(loc, state, "post_depth_coverage layout qualifier
> only "
> "valid in fragment shader input layout
> declaration.");
> diff --git a/src/compiler/glsl/ast_type.cpp b/src/compiler/glsl/ast_type.
> cpp
> index aa1ae7e..d68e6e2 100644
> --- a/src/compiler/glsl/ast_type.cpp
> +++ b/src/compiler/glsl/ast_type.cpp
> @@ -579,6 +579,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE
> *loc,
>break;
> case MESA_SHADER_FRAGMENT:
>valid_in_mask.flags.q.early_fragment_tests = 1;
> +  valid_in_mask.flags.q.inner_coverage = 1;
>valid_in_mask.flags.q.post_depth_coverage = 1;
>break;
> case MESA_SHADER_COMPUTE:
> @@ -634,11 +635,23 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE
> *loc,
>state->in_qualifier->flags.q.early_fragment_tests = false;
> }
>
> +   if (state->in_qualifier->flags.q.inner_coverage) {
> +  state->fs_inner_coverage = true;
> +  state->in_qualifier->flags.q.inner_coverage = false;
> +   }
> +
> if (state->in_qualifier->flags.q.post_depth_coverage) {
>state->fs_post_depth_coverage = true;
>state->in_qualifier->flags.q.post_depth_coverage = false;
> }
>
> +   if (state->fs_inner_coverage && state->fs_post_depth_coverage) {
> +  _mesa_glsl_error(loc, state,
> +   "inner_coverage & post_depth_coverage layout
> qualifiers "
> +   "are mutally exclusives");
> +  r = false;
> +   }
> +
> /* We allow the creation of multiple cs_input_layout nodes. Coherence
> among
>  * all existing nodes is checked later, when the AST node is
> transformed
>  * into HIR.
> @@ -707,7 +720,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
>  "%s '%s':"
>  "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
>  "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
> -"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
> +"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
>  message, name,
>  bad.flags.q.invariant ? " invariant" : "",
>  bad.flags.q.precise ? " precise" : "",
> @@ -768,6 +781,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
>  bad.flags.q.vertices ? " vertices" : "",
>  bad.flags.q.subroutine ? " subroutine" : "",
>  bad.flags.q.subroutine_def ? " subroutine_def" : "",
> +bad.flags.q.inner_coverage ? " inner_coverage" : "",
>  bad.flags.q.post_depth_coverage ? "
> post_depth_coverage" : "");
> return false;
>  }
> diff --git 

[Mesa-dev] [PATCH 1/2] mesa: add support for GL_INTEL_conservative_rasterization

2016-12-01 Thread Lionel Landwerlin
Signed-off-by: Lionel Landwerlin 
---
 src/compiler/glsl/ast.h  |  5 
 src/compiler/glsl/ast_to_hir.cpp |  5 
 src/compiler/glsl/ast_type.cpp   | 16 +++-
 src/compiler/glsl/glsl_parser.yy | 34 ++
 src/compiler/glsl/glsl_parser_extras.cpp |  4 +++
 src/compiler/glsl/glsl_parser_extras.h   |  4 +++
 src/compiler/glsl/linker.cpp |  3 +++
 src/compiler/shader_info.h   |  6 +
 src/mesa/main/api_validate.c | 42 
 src/mesa/main/enable.c   | 12 +
 src/mesa/main/extensions_table.h |  1 +
 src/mesa/main/mtypes.h   |  3 +++
 src/mesa/main/shaderapi.c|  1 +
 13 files changed, 130 insertions(+), 6 deletions(-)

diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h
index df3a744..0e32c36 100644
--- a/src/compiler/glsl/ast.h
+++ b/src/compiler/glsl/ast.h
@@ -610,6 +610,11 @@ struct ast_type_qualifier {
   * Flag set if GL_ARB_post_depth_coverage layout qualifier is used.
   */
  unsigned post_depth_coverage:1;
+ /**
+  * Flag set if GL_INTEL_conservartive_rasterization layout qualifier
+  * is used.
+  */
+ unsigned inner_coverage:1;
   }
   /** \brief Set of flags, accessed by name. */
   q;
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index 2434ce5..1e14d27 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -3633,6 +3633,11 @@ apply_layout_qualifier_to_variable(const struct 
ast_type_qualifier *qual,
"valid in fragment shader input layout declaration.");
}
 
+   if (qual->flags.q.inner_coverage) {
+  _mesa_glsl_error(loc, state, "inner_coverage layout qualifier only "
+   "valid in fragment shader input layout declaration.");
+   }
+
if (qual->flags.q.post_depth_coverage) {
   _mesa_glsl_error(loc, state, "post_depth_coverage layout qualifier only "
"valid in fragment shader input layout declaration.");
diff --git a/src/compiler/glsl/ast_type.cpp b/src/compiler/glsl/ast_type.cpp
index aa1ae7e..d68e6e2 100644
--- a/src/compiler/glsl/ast_type.cpp
+++ b/src/compiler/glsl/ast_type.cpp
@@ -579,6 +579,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE *loc,
   break;
case MESA_SHADER_FRAGMENT:
   valid_in_mask.flags.q.early_fragment_tests = 1;
+  valid_in_mask.flags.q.inner_coverage = 1;
   valid_in_mask.flags.q.post_depth_coverage = 1;
   break;
case MESA_SHADER_COMPUTE:
@@ -634,11 +635,23 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc,
   state->in_qualifier->flags.q.early_fragment_tests = false;
}
 
+   if (state->in_qualifier->flags.q.inner_coverage) {
+  state->fs_inner_coverage = true;
+  state->in_qualifier->flags.q.inner_coverage = false;
+   }
+
if (state->in_qualifier->flags.q.post_depth_coverage) {
   state->fs_post_depth_coverage = true;
   state->in_qualifier->flags.q.post_depth_coverage = false;
}
 
+   if (state->fs_inner_coverage && state->fs_post_depth_coverage) {
+  _mesa_glsl_error(loc, state,
+   "inner_coverage & post_depth_coverage layout qualifiers 
"
+   "are mutally exclusives");
+  r = false;
+   }
+
/* We allow the creation of multiple cs_input_layout nodes. Coherence among
 * all existing nodes is checked later, when the AST node is transformed
 * into HIR.
@@ -707,7 +720,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
 "%s '%s':"
 "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
 "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
-"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
+"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
 message, name,
 bad.flags.q.invariant ? " invariant" : "",
 bad.flags.q.precise ? " precise" : "",
@@ -768,6 +781,7 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
 bad.flags.q.vertices ? " vertices" : "",
 bad.flags.q.subroutine ? " subroutine" : "",
 bad.flags.q.subroutine_def ? " subroutine_def" : "",
+bad.flags.q.inner_coverage ? " inner_coverage" : "",
 bad.flags.q.post_depth_coverage ? " post_depth_coverage" : 
"");
return false;
 }
diff --git a/src/compiler/glsl/glsl_parser.yy b/src/compiler/glsl/glsl_parser.yy
index 09b7e79..e3893d5 100644
--- a/src/compiler/glsl/glsl_parser.yy
+++ b/src/compiler/glsl/glsl_parser.yy
@@ -1372,9 +1372,10 @@ layout_qualifier_id:
}
 }
  }
+  }
 
- if (!$$.flags.i &&
- match_layout_qualifier($1, "early_fragment_tests", state) ==