[Mesa-dev] [PATCH] radeonsi: Don't use anonymous struct trick in atom tracking

Marek Olšák maraeo at gmail.com
Thu Apr 24 16:34:23 PDT 2014


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Tue, Apr 22, 2014 at 6:47 PM, Adam Jackson <ajax at redhat.com> wrote:
> I'm somewhat impressed that current gccs will let you do this, but
> sufficiently old ones (including 4.4.7 in RHEL6) won't.
>
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
>  src/gallium/drivers/radeonsi/si_descriptors.c | 6 +++---
>  src/gallium/drivers/radeonsi/si_hw_context.c  | 2 +-
>  src/gallium/drivers/radeonsi/si_pipe.c        | 6 +++---
>  src/gallium/drivers/radeonsi/si_pipe.h        | 2 +-
>  src/gallium/drivers/radeonsi/si_state.c       | 2 +-
>  src/gallium/drivers/radeonsi/si_state_draw.c  | 2 +-
>  6 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
> index 0c58d5f..e0b211f 100644
> --- a/src/gallium/drivers/radeonsi/si_descriptors.c
> +++ b/src/gallium/drivers/radeonsi/si_descriptors.c
> @@ -987,9 +987,9 @@ void si_init_all_descriptors(struct si_context *sctx)
>
>                 si_init_sampler_views(sctx, &sctx->samplers[i].views, i);
>
> -               sctx->atoms.const_buffers[i] = &sctx->const_buffers[i].desc.atom;
> -               sctx->atoms.rw_buffers[i] = &sctx->rw_buffers[i].desc.atom;
> -               sctx->atoms.sampler_views[i] = &sctx->samplers[i].views.desc.atom;
> +               sctx->atoms.s.const_buffers[i] = &sctx->const_buffers[i].desc.atom;
> +               sctx->atoms.s.rw_buffers[i] = &sctx->rw_buffers[i].desc.atom;
> +               sctx->atoms.s.sampler_views[i] = &sctx->samplers[i].views.desc.atom;
>         }
>
>
> diff --git a/src/gallium/drivers/radeonsi/si_hw_context.c b/src/gallium/drivers/radeonsi/si_hw_context.c
> index 383157b..d2a1dbe 100644
> --- a/src/gallium/drivers/radeonsi/si_hw_context.c
> +++ b/src/gallium/drivers/radeonsi/si_hw_context.c
> @@ -63,7 +63,7 @@ void si_need_cs_space(struct si_context *ctx, unsigned num_dw,
>         }
>
>         /* Count in framebuffer cache flushes at the end of CS. */
> -       num_dw += ctx->atoms.cache_flush->num_dw;
> +       num_dw += ctx->atoms.s.cache_flush->num_dw;
>
>  #if SI_TRACE_CS
>         if (ctx->screen->b.trace_bo) {
> diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
> index a1aea7b..2627571 100644
> --- a/src/gallium/drivers/radeonsi/si_pipe.c
> +++ b/src/gallium/drivers/radeonsi/si_pipe.c
> @@ -105,10 +105,10 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, void *
>
>         /* Initialize cache_flush. */
>         sctx->cache_flush = si_atom_cache_flush;
> -       sctx->atoms.cache_flush = &sctx->cache_flush;
> +       sctx->atoms.s.cache_flush = &sctx->cache_flush;
>
> -       sctx->atoms.streamout_begin = &sctx->b.streamout.begin_atom;
> -       sctx->atoms.streamout_enable = &sctx->b.streamout.enable_atom;
> +       sctx->atoms.s.streamout_begin = &sctx->b.streamout.begin_atom;
> +       sctx->atoms.s.streamout_enable = &sctx->b.streamout.enable_atom;
>
>         switch (sctx->b.chip_class) {
>         case SI:
> diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h
> index a74bbcf..1601a4b 100644
> --- a/src/gallium/drivers/radeonsi/si_pipe.h
> +++ b/src/gallium/drivers/radeonsi/si_pipe.h
> @@ -110,7 +110,7 @@ struct si_context {
>                         struct r600_atom *streamout_begin;
>                         struct r600_atom *streamout_enable; /* must be after streamout_begin */
>                         struct r600_atom *framebuffer;
> -               };
> +               } s;
>                 struct r600_atom *array[0];
>         } atoms;
>
> diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
> index 921264e..734054f 100644
> --- a/src/gallium/drivers/radeonsi/si_state.c
> +++ b/src/gallium/drivers/radeonsi/si_state.c
> @@ -2954,7 +2954,7 @@ void si_init_state_functions(struct si_context *sctx)
>  {
>         int i;
>
> -       si_init_atom(&sctx->framebuffer.atom, &sctx->atoms.framebuffer, si_emit_framebuffer_state, 0);
> +       si_init_atom(&sctx->framebuffer.atom, &sctx->atoms.s.framebuffer, si_emit_framebuffer_state, 0);
>
>         sctx->b.b.create_blend_state = si_create_blend_state;
>         sctx->b.b.bind_blend_state = si_bind_blend_state;
> diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
> index 0676b15..c7c94fc 100644
> --- a/src/gallium/drivers/radeonsi/si_state_draw.c
> +++ b/src/gallium/drivers/radeonsi/si_state_draw.c
> @@ -964,7 +964,7 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
>
>         /* Check flush flags. */
>         if (sctx->b.flags)
> -               sctx->atoms.cache_flush->dirty = true;
> +               sctx->atoms.s.cache_flush->dirty = true;
>
>         si_need_cs_space(sctx, 0, TRUE);
>
> --
> 1.8.5.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