Re: [Mesa-dev] [PATCH 1/2] mesa: add support for GL_INTEL_conservative_rasterization
On Wed, Dec 7, 2016 at 12:04 PM, Ilia Mirkinwrote: > 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
On Wed, Dec 7, 2016 at 10:31 AM, Ilia Mirkinwrote: > 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
On Wed, Dec 7, 2016 at 10:25 AM, Lionel Landwerlinwrote: > 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
On 07/12/16 14:55, Ilia Mirkin wrote: On Thu, Dec 1, 2016 at 10:56 AM, Lionel Landwerlinwrote: 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
On Thu, Dec 1, 2016 at 10:56 AM, Lionel Landwerlinwrote: > 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
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
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
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) ==