Yes, good idea to do this in one place. Reviewed-By: Wladimir J. van der Laan <laa...@gmail.com>
On Wed, May 10, 2017 at 06:01:06PM +0200, Lucas Stach wrote: > This way we can just test the feature bits and don't need to spread > the debug overrides to all locations touching a feature. > > Signed-off-by: Lucas Stach <l.st...@pengutronix.de> > --- > src/gallium/drivers/etnaviv/etnaviv_clear_blit.c | 6 ++---- > src/gallium/drivers/etnaviv/etnaviv_resource.c | 2 +- > src/gallium/drivers/etnaviv/etnaviv_screen.c | 10 ++++++++++ > src/gallium/drivers/etnaviv/etnaviv_surface.c | 2 +- > src/gallium/drivers/etnaviv/etnaviv_zsa.c | 9 +++++---- > 5 files changed, 19 insertions(+), 10 deletions(-) > > diff --git a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c > b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c > index 528b57389d57..ae1c5862880f 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c > +++ b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c > @@ -111,8 +111,7 @@ etna_blit_clear_color(struct pipe_context *pctx, struct > pipe_surface *dst, > if (surf->surf.ts_size) { /* TS: use precompiled clear command */ > ctx->framebuffer.TS_COLOR_CLEAR_VALUE = new_clear_value; > > - if (!DBG_ENABLED(ETNA_DBG_NO_AUTODISABLE) && > - VIV_FEATURE(ctx->screen, chipMinorFeatures1, AUTO_DISABLE)) { > + if (VIV_FEATURE(ctx->screen, chipMinorFeatures1, AUTO_DISABLE)) { > /* Set number of color tiles to be filled */ > etna_set_state(ctx->stream, VIVS_TS_COLOR_AUTO_DISABLE_COUNT, > surf->surf.padded_width * surf->surf.padded_height / > 16); > @@ -171,8 +170,7 @@ etna_blit_clear_zs(struct pipe_context *pctx, struct > pipe_surface *dst, > if (surf->surf.ts_size) { /* TS: use precompiled clear command */ > /* Set new clear depth value */ > ctx->framebuffer.TS_DEPTH_CLEAR_VALUE = new_clear_value; > - if (!DBG_ENABLED(ETNA_DBG_NO_AUTODISABLE) && > - VIV_FEATURE(ctx->screen, chipMinorFeatures1, AUTO_DISABLE)) { > + if (VIV_FEATURE(ctx->screen, chipMinorFeatures1, AUTO_DISABLE)) { > /* Set number of depth tiles to be filled */ > etna_set_state(ctx->stream, VIVS_TS_DEPTH_AUTO_DISABLE_COUNT, > surf->surf.padded_width * surf->surf.padded_height / > 16); > diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c > b/src/gallium/drivers/etnaviv/etnaviv_resource.c > index 26f2ed733498..103b53c1c310 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_resource.c > +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c > @@ -247,7 +247,7 @@ etna_resource_create(struct pipe_screen *pscreen, > layout = ETNA_LAYOUT_LINEAR; > } else if (templat->target != PIPE_BUFFER) { > bool want_multitiled = false; > - bool want_supertiled = screen->specs.can_supertile && > !DBG_ENABLED(ETNA_DBG_NO_SUPERTILE); > + bool want_supertiled = screen->specs.can_supertile; > > /* When this GPU supports single-buffer rendering, don't ever enable > * multi-tiling. This replicates the blob behavior on GC3000. > diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c > b/src/gallium/drivers/etnaviv/etnaviv_screen.c > index 626f7c778985..aba6bb701dc3 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c > +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c > @@ -829,6 +829,16 @@ etna_screen_create(struct etna_device *dev, struct > etna_gpu *gpu, > if (!etna_get_specs(screen)) > goto fail; > > + /* apply debug options that disable individual features */ > + if (DBG_ENABLED(ETNA_DBG_NO_EARLY_Z)) > + screen->features[viv_chipFeatures] |= chipFeatures_NO_EARLY_Z; > + if (DBG_ENABLED(ETNA_DBG_NO_TS)) > + screen->features[viv_chipFeatures] &= ~chipFeatures_FAST_CLEAR; > + if (DBG_ENABLED(ETNA_DBG_NO_AUTODISABLE)) > + screen->features[viv_chipMinorFeatures1] &= > ~chipMinorFeatures1_AUTO_DISABLE; > + if (DBG_ENABLED(ETNA_DBG_NO_SUPERTILE)) > + screen->specs.can_supertile = 0; > + > pscreen->destroy = etna_screen_destroy; > pscreen->get_param = etna_screen_get_param; > pscreen->get_paramf = etna_screen_get_paramf; > diff --git a/src/gallium/drivers/etnaviv/etnaviv_surface.c > b/src/gallium/drivers/etnaviv/etnaviv_surface.c > index 1db9b40a5108..4b95f6575a45 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_surface.c > +++ b/src/gallium/drivers/etnaviv/etnaviv_surface.c > @@ -66,7 +66,7 @@ etna_create_surface(struct pipe_context *pctx, struct > pipe_resource *prsc, > > if (VIV_FEATURE(ctx->screen, chipFeatures, FAST_CLEAR) && > VIV_FEATURE(ctx->screen, chipMinorFeatures0, MC20) && > - !DBG_ENABLED(ETNA_DBG_NO_TS) && !rsc->ts_bo && > + !rsc->ts_bo && > (rsc->levels[level].padded_width & ETNA_RS_WIDTH_MASK) == 0 && > (rsc->levels[level].padded_height & ETNA_RS_HEIGHT_MASK) == 0) { > etna_screen_resource_alloc_ts(pctx->screen, rsc); > diff --git a/src/gallium/drivers/etnaviv/etnaviv_zsa.c > b/src/gallium/drivers/etnaviv/etnaviv_zsa.c > index 7caba279b376..22c2020fe5c3 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_zsa.c > +++ b/src/gallium/drivers/etnaviv/etnaviv_zsa.c > @@ -27,13 +27,17 @@ > #include "etnaviv_zsa.h" > > #include "etnaviv_context.h" > +#include "etnaviv_screen.h" > #include "etnaviv_translate.h" > #include "util/u_memory.h" > > +#include "hw/common.xml.h" > + > void * > etna_zsa_state_create(struct pipe_context *pctx, > const struct pipe_depth_stencil_alpha_state *so) > { > + struct etna_context *ctx = etna_context(pctx); > struct etna_zsa_state *cs = CALLOC_STRUCT(etna_zsa_state); > > if (!cs) > @@ -42,7 +46,7 @@ etna_zsa_state_create(struct pipe_context *pctx, > cs->base = *so; > > /* XXX does stencil[0] / stencil[1] order depend on rs->front_ccw? */ > - bool early_z = true; > + bool early_z = !VIV_FEATURE(ctx->screen, chipFeatures, NO_EARLY_Z); > bool disable_zs = > (!so->depth.enabled || so->depth.func == PIPE_FUNC_ALWAYS) && > !so->depth.writemask; > @@ -88,9 +92,6 @@ etna_zsa_state_create(struct pipe_context *pctx, > if (so->depth.enabled == false || so->depth.func == PIPE_FUNC_ALWAYS) > early_z = false; > > - if (DBG_ENABLED(ETNA_DBG_NO_EARLY_Z)) > - early_z = false; > - > /* compare funcs have 1 to 1 mapping */ > cs->PE_DEPTH_CONFIG = > VIVS_PE_DEPTH_CONFIG_DEPTH_FUNC(so->depth.enabled ? so->depth.func > -- > 2.11.0 > > _______________________________________________ > etnaviv mailing list > etna...@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/etnaviv _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev