[Mesa-dev] [PATCH 5/5] gallium: Enable ARB_clip_control for gallium drivers.

Marek Olšák maraeo at gmail.com
Fri Oct 24 12:39:25 PDT 2014


I think the Mesa flag should be _NEW_TRANSFORM and not _NEW_VIEWPORT.
This should be corrected in one of the previous patches. Using
_NEW_TRANSFORM will avoid the dependency on _NEW_VIEWPORT in the
rasterizer state.

Marek

On Fri, Oct 24, 2014 at 9:26 AM,  <Mathias.Froehlich at gmx.net> wrote:
> From: Mathias Fröhlich <Mathias.Froehlich at gmx.net>
>
> Gallium should be prepared fine for ARB_clip_control.
> So enable this and mention it in the release notes.
>
> v2:
> Only enable for drivers announcing the freshly introduced
> PIPE_CAP_CLIP_HALFZ capability.
>
> v3:
> Use extension enable infrastructure to connect PIPE_CAP_CLIP_HALFZ
> with ARB_clip_control.
>
> Signed-off-by: Mathias Froehlich <Mathias.Froehlich at web.de>
> ---
>  docs/GL3.txt                                |  2 +-
>  docs/relnotes/10.4.html                     |  1 +
>  src/mesa/state_tracker/st_atom_rasterizer.c | 14 +++++++++++++-
>  src/mesa/state_tracker/st_extensions.c      |  1 +
>  4 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/docs/GL3.txt b/docs/GL3.txt
> index 07d1d2c..6a988d5 100644
> --- a/docs/GL3.txt
> +++ b/docs/GL3.txt
> @@ -187,7 +187,7 @@ GL 4.4, GLSL 4.40:
>  GL 4.5, GLSL 4.50:
>
>    GL_ARB_ES3_1_compatibility                           not started
> -  GL_ARB_clip_control                                  not started
> +  GL_ARB_clip_control                                  DONE (llvmpipe, softpipe, r300, r600, radeonsi)
>    GL_ARB_conditional_render_inverted                   DONE (i965, nvc0, llvmpipe, softpipe)
>    GL_ARB_cull_distance                                 not started
>    GL_ARB_derivative_control                            DONE (i965, nv50, nvc0, r600)
> diff --git a/docs/relnotes/10.4.html b/docs/relnotes/10.4.html
> index 64cbfae..67c3087 100644
> --- a/docs/relnotes/10.4.html
> +++ b/docs/relnotes/10.4.html
> @@ -46,6 +46,7 @@ Note: some of the new features are only available with certain drivers.
>  <ul>
>  <li>GL_ARB_sample_shading on r600</li>
>  <li>GL_ARB_texture_view on nv50, nvc0</li>
> +<li>GL_ARB_clip_control on llvmpipe, softpipe, r300, r600, radeonsi</li>
>  </ul>
>
>
> diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c b/src/mesa/state_tracker/st_atom_rasterizer.c
> index dfa728b..2f0886e 100644
> --- a/src/mesa/state_tracker/st_atom_rasterizer.c
> +++ b/src/mesa/state_tracker/st_atom_rasterizer.c
> @@ -72,6 +72,11 @@ static void update_raster_state( struct st_context *st )
>     {
>        raster->front_ccw = (ctx->Polygon.FrontFace == GL_CCW);
>
> +      /* _NEW_VIEWPORT */
> +      if (ctx->Transform.Origin == GL_UPPER_LEFT) {
> +         raster->front_ccw ^= 1;
> +      }
> +
>        /*
>         * Gallium's surfaces are Y=0=TOP orientation.  OpenGL is the
>         * opposite.  Window system surfaces are Y=0=TOP.  Mesa's FBOs
> @@ -241,6 +246,12 @@ static void update_raster_state( struct st_context *st )
>     raster->half_pixel_center = 1;
>     if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP)
>        raster->bottom_edge_rule = 1;
> +   /* _NEW_VIEWPORT */
> +   if (ctx->Transform.Origin == GL_UPPER_LEFT)
> +      raster->bottom_edge_rule ^= 1;
> +
> +   /* _NEW_VIEWPORT */
> +   raster->clip_halfz = (ctx->Transform.Depth == GL_ZERO_TO_ONE);
>
>     /* ST_NEW_RASTERIZER */
>     raster->rasterizer_discard = ctx->RasterDiscard;
> @@ -272,7 +283,8 @@ const struct st_tracked_state st_update_rasterizer = {
>         _NEW_PROGRAM |
>         _NEW_SCISSOR |
>         _NEW_FRAG_CLAMP |
> -       _NEW_TRANSFORM),      /* mesa state dependencies*/
> +       _NEW_TRANSFORM |
> +       _NEW_VIEWPORT),      /* mesa state dependencies*/
>        (ST_NEW_VERTEX_PROGRAM |
>         ST_NEW_RASTERIZER),  /* state tracker dependencies */
>     },
> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
> index 78bfe30..aff3dde 100644
> --- a/src/mesa/state_tracker/st_extensions.c
> +++ b/src/mesa/state_tracker/st_extensions.c
> @@ -463,6 +463,7 @@ void st_init_extensions(struct pipe_screen *screen,
>        { o(ARB_derivative_control),           PIPE_CAP_TGSI_FS_FINE_DERIVATIVE          },
>        { o(ARB_conditional_render_inverted),  PIPE_CAP_CONDITIONAL_RENDER_INVERTED      },
>        { o(ARB_texture_view),                 PIPE_CAP_SAMPLER_VIEW_TARGET              },
> +      { o(ARB_clip_control),                 PIPE_CAP_CLIP_HALFZ                       },
>     };
>
>     /* Required: render target and sampler support */
> --
> 1.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list