On Fri, Sep 4, 2015 at 9:47 PM, Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> wrote: > The values for resource word 6 have been taken from Catalyst traces. > > Signed-off-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> > --- > src/gallium/drivers/radeonsi/si_descriptors.c | 5 +++++ > src/gallium/drivers/radeonsi/si_pipe.h | 1 + > src/gallium/drivers/radeonsi/si_state.c | 13 +++++++++++-- > 3 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c > b/src/gallium/drivers/radeonsi/si_descriptors.c > index d7cad23..d23da1d 100644 > --- a/src/gallium/drivers/radeonsi/si_descriptors.c > +++ b/src/gallium/drivers/radeonsi/si_descriptors.c > @@ -192,6 +192,11 @@ static void si_set_sampler_view(struct si_context *sctx, > unsigned shader, > rview->resource, RADEON_USAGE_READ, > si_get_resource_ro_priority(rview->resource)); > > + if (rview->dcc_buffer) > + radeon_add_to_buffer_list(&sctx->b, > &sctx->b.rings.gfx, > + rview->dcc_buffer, RADEON_USAGE_READ, > + si_get_resource_ro_priority(rview->resource)); > + > pipe_sampler_view_reference(&views->views[slot], view); > memcpy(views->desc.list + slot*8, view_desc, 8*4); > views->desc.enabled_mask |= 1llu << slot; > diff --git a/src/gallium/drivers/radeonsi/si_pipe.h > b/src/gallium/drivers/radeonsi/si_pipe.h > index 66c66c8..4b3ff8e 100644 > --- a/src/gallium/drivers/radeonsi/si_pipe.h > +++ b/src/gallium/drivers/radeonsi/si_pipe.h > @@ -96,6 +96,7 @@ struct si_sampler_view { > struct pipe_sampler_view base; > struct list_head list; > struct r600_resource *resource; > + struct r600_resource *dcc_buffer; > /* [0..7] = image descriptor > * [4..7] = buffer descriptor */ > uint32_t state[8]; > diff --git a/src/gallium/drivers/radeonsi/si_state.c > b/src/gallium/drivers/radeonsi/si_state.c > index 3e11922..755de28 100644 > --- a/src/gallium/drivers/radeonsi/si_state.c > +++ b/src/gallium/drivers/radeonsi/si_state.c > @@ -2633,8 +2633,17 @@ si_create_sampler_view_custom(struct pipe_context *ctx, > view->state[4] = (S_008F20_DEPTH(depth - 1) | S_008F20_PITCH(pitch - > 1)); > view->state[5] = (S_008F24_BASE_ARRAY(state->u.tex.first_layer) | > S_008F24_LAST_ARRAY(state->u.tex.last_layer)); > - view->state[6] = 0; > - view->state[7] = 0; > + > + if(tmp->dcc_buffer) { > + uint64_t dcc_offset = surflevel[base_level].dcc_offset; > + > + view->state[6] = S_008F28_COMPRESSION_EN(1) | > S_008F28_ALPHA_IS_ON_MSB(1);
The second specified field should be: ALPHA_IS_ON_MSB(r600_translate_colorswap(format) <= 1) Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev