[Mesa-dev,08/12] cso: remove clip state handling

Submitted by Marek Olšák on July 16, 2015, 6:05 p.m.

Details

Message ID 1437069930-30697-1-git-send-email-maraeo@gmail.com
State New
Headers show

Not browsing as part of any series.

Commit Message

Marek Olšák July 16, 2015, 6:05 p.m.
From: Marek Olšák <marek.olsak@amd.com>

There is no need for this.

v2: handle redundant clip state changes in st/mesa
---
 src/gallium/auxiliary/cso_cache/cso_context.c | 44 ---------------------------
 src/gallium/auxiliary/cso_cache/cso_context.h | 13 --------
 src/mesa/state_tracker/st_atom_clip.c         |  7 +++--
 3 files changed, 5 insertions(+), 59 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c
index 1b4e2e6..3e7fe22 100644
--- a/src/gallium/auxiliary/cso_cache/cso_context.c
+++ b/src/gallium/auxiliary/cso_cache/cso_context.c
@@ -111,9 +111,6 @@  struct cso_context {
    uint render_condition_mode, render_condition_mode_saved;
    boolean render_condition_cond, render_condition_cond_saved;
 
-   struct pipe_clip_state clip;
-   struct pipe_clip_state clip_saved;
-
    struct pipe_framebuffer_state fb, fb_saved;
    struct pipe_viewport_state vp, vp_saved;
    struct pipe_blend_color blend_color;
@@ -910,47 +907,6 @@  void cso_restore_tesseval_shader(struct cso_context *ctx)
    ctx->tesseval_shader_saved = NULL;
 }
 
-/* clip state */
-
-static INLINE void
-clip_state_cpy(struct pipe_clip_state *dst,
-               const struct pipe_clip_state *src)
-{
-   memcpy(dst->ucp, src->ucp, sizeof(dst->ucp));
-}
-
-static INLINE int
-clip_state_cmp(const struct pipe_clip_state *a,
-               const struct pipe_clip_state *b)
-{
-   return memcmp(a->ucp, b->ucp, sizeof(a->ucp));
-}
-
-void
-cso_set_clip(struct cso_context *ctx,
-             const struct pipe_clip_state *clip)
-{
-   if (clip_state_cmp(&ctx->clip, clip)) {
-      clip_state_cpy(&ctx->clip, clip);
-      ctx->pipe->set_clip_state(ctx->pipe, clip);
-   }
-}
-
-void
-cso_save_clip(struct cso_context *ctx)
-{
-   clip_state_cpy(&ctx->clip_saved, &ctx->clip);
-}
-
-void
-cso_restore_clip(struct cso_context *ctx)
-{
-   if (clip_state_cmp(&ctx->clip, &ctx->clip_saved)) {
-      clip_state_cpy(&ctx->clip, &ctx->clip_saved);
-      ctx->pipe->set_clip_state(ctx->pipe, &ctx->clip_saved);
-   }
-}
-
 enum pipe_error
 cso_set_vertex_elements(struct cso_context *ctx,
                         unsigned count,
diff --git a/src/gallium/auxiliary/cso_cache/cso_context.h b/src/gallium/auxiliary/cso_cache/cso_context.h
index c9a4226..3bee429 100644
--- a/src/gallium/auxiliary/cso_cache/cso_context.h
+++ b/src/gallium/auxiliary/cso_cache/cso_context.h
@@ -188,19 +188,6 @@  void cso_save_render_condition(struct cso_context *cso);
 void cso_restore_render_condition(struct cso_context *cso);
 
 
-/* clip state */
-
-void
-cso_set_clip(struct cso_context *cso,
-             const struct pipe_clip_state *clip);
-
-void
-cso_save_clip(struct cso_context *cso);
-
-void
-cso_restore_clip(struct cso_context *cso);
-
-
 /* sampler view state */
 
 void
diff --git a/src/mesa/state_tracker/st_atom_clip.c b/src/mesa/state_tracker/st_atom_clip.c
index f82c133..eb43fe5 100644
--- a/src/mesa/state_tracker/st_atom_clip.c
+++ b/src/mesa/state_tracker/st_atom_clip.c
@@ -59,8 +59,11 @@  static void update_clip( struct st_context *st )
    memcpy(clip.ucp,
           use_eye ? ctx->Transform.EyeUserPlane
                   : ctx->Transform._ClipUserPlane, sizeof(clip.ucp));
-   st->state.clip = clip;
-   cso_set_clip(st->cso_context, &clip);
+
+   if (st->state.clip != clip) {
+      st->state.clip = clip;
+      st->pipe->set_clip_state(st->pipe, &clip);
+   }
 }
 
 

Comments

On Thu, Jul 16, 2015 at 8:05 PM, Marek Olšák <maraeo@gmail.com> wrote:
> From: Marek Olšák <marek.olsak@amd.com>
>
> There is no need for this.
>
> v2: handle redundant clip state changes in st/mesa
> ---
>  src/gallium/auxiliary/cso_cache/cso_context.c | 44 ---------------------------
>  src/gallium/auxiliary/cso_cache/cso_context.h | 13 --------
>  src/mesa/state_tracker/st_atom_clip.c         |  7 +++--
>  3 files changed, 5 insertions(+), 59 deletions(-)
>
> diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c
> index 1b4e2e6..3e7fe22 100644
> --- a/src/gallium/auxiliary/cso_cache/cso_context.c
> +++ b/src/gallium/auxiliary/cso_cache/cso_context.c
> @@ -111,9 +111,6 @@ struct cso_context {
>     uint render_condition_mode, render_condition_mode_saved;
>     boolean render_condition_cond, render_condition_cond_saved;
>
> -   struct pipe_clip_state clip;
> -   struct pipe_clip_state clip_saved;
> -
>     struct pipe_framebuffer_state fb, fb_saved;
>     struct pipe_viewport_state vp, vp_saved;
>     struct pipe_blend_color blend_color;
> @@ -910,47 +907,6 @@ void cso_restore_tesseval_shader(struct cso_context *ctx)
>     ctx->tesseval_shader_saved = NULL;
>  }
>
> -/* clip state */
> -
> -static INLINE void
> -clip_state_cpy(struct pipe_clip_state *dst,
> -               const struct pipe_clip_state *src)
> -{
> -   memcpy(dst->ucp, src->ucp, sizeof(dst->ucp));
> -}
> -
> -static INLINE int
> -clip_state_cmp(const struct pipe_clip_state *a,
> -               const struct pipe_clip_state *b)
> -{
> -   return memcmp(a->ucp, b->ucp, sizeof(a->ucp));
> -}
> -
> -void
> -cso_set_clip(struct cso_context *ctx,
> -             const struct pipe_clip_state *clip)
> -{
> -   if (clip_state_cmp(&ctx->clip, clip)) {
> -      clip_state_cpy(&ctx->clip, clip);
> -      ctx->pipe->set_clip_state(ctx->pipe, clip);
> -   }
> -}
> -
> -void
> -cso_save_clip(struct cso_context *ctx)
> -{
> -   clip_state_cpy(&ctx->clip_saved, &ctx->clip);
> -}
> -
> -void
> -cso_restore_clip(struct cso_context *ctx)
> -{
> -   if (clip_state_cmp(&ctx->clip, &ctx->clip_saved)) {
> -      clip_state_cpy(&ctx->clip, &ctx->clip_saved);
> -      ctx->pipe->set_clip_state(ctx->pipe, &ctx->clip_saved);
> -   }
> -}
> -
>  enum pipe_error
>  cso_set_vertex_elements(struct cso_context *ctx,
>                          unsigned count,
> diff --git a/src/gallium/auxiliary/cso_cache/cso_context.h b/src/gallium/auxiliary/cso_cache/cso_context.h
> index c9a4226..3bee429 100644
> --- a/src/gallium/auxiliary/cso_cache/cso_context.h
> +++ b/src/gallium/auxiliary/cso_cache/cso_context.h
> @@ -188,19 +188,6 @@ void cso_save_render_condition(struct cso_context *cso);
>  void cso_restore_render_condition(struct cso_context *cso);
>
>
> -/* clip state */
> -
> -void
> -cso_set_clip(struct cso_context *cso,
> -             const struct pipe_clip_state *clip);
> -
> -void
> -cso_save_clip(struct cso_context *cso);
> -
> -void
> -cso_restore_clip(struct cso_context *cso);
> -
> -
>  /* sampler view state */
>
>  void
> diff --git a/src/mesa/state_tracker/st_atom_clip.c b/src/mesa/state_tracker/st_atom_clip.c
> index f82c133..eb43fe5 100644
> --- a/src/mesa/state_tracker/st_atom_clip.c
> +++ b/src/mesa/state_tracker/st_atom_clip.c
> @@ -59,8 +59,11 @@ static void update_clip( struct st_context *st )
>     memcpy(clip.ucp,
>            use_eye ? ctx->Transform.EyeUserPlane
>                    : ctx->Transform._ClipUserPlane, sizeof(clip.ucp));
> -   st->state.clip = clip;
> -   cso_set_clip(st->cso_context, &clip);
> +
> +   if (st->state.clip != clip) {

I've also changed this to memcmp.

Marek