I'm somewhat impressed that current gccs will let you do this, but sufficiently old ones (including 4.4.7 in RHEL6) won't. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Adam Jackson <ajax@redhat.com>tags/10.3-branchpoint
@@ -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; | |||
} | |||
@@ -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) { |
@@ -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: |
@@ -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; | |||
@@ -2962,7 +2962,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; |
@@ -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); | |||