2017-07-04 17:45 GMT+02:00 Lucas Stach <l.st...@pengutronix.de>: > The minimum RS alignment calculation is needed in various places. > Extract a helper to avoid open-coding the calcuation at every site. > > Signed-off-by: Lucas Stach <l.st...@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmei...@gmail.com> > --- > src/gallium/drivers/etnaviv/etnaviv_resource.c | 14 +++++--------- > src/gallium/drivers/etnaviv/etnaviv_translate.h | 13 +++++++++++++ > 2 files changed, 18 insertions(+), 9 deletions(-) > > diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c > b/src/gallium/drivers/etnaviv/etnaviv_resource.c > index a62c22d0f338..778165113d54 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_resource.c > +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c > @@ -180,11 +180,8 @@ etna_resource_alloc(struct pipe_screen *pscreen, > unsigned layout, > &paddingY, &halign); > assert(paddingX && paddingY); > > - if (templat->target != PIPE_BUFFER) { > - unsigned min_paddingY = 4 * screen->specs.pixel_pipes; > - if (paddingY < min_paddingY) > - paddingY = min_paddingY; > - } > + if (templat->target != PIPE_BUFFER) > + etna_adjust_rs_align(screen->specs.pixel_pipes, NULL, &paddingY); > > struct etna_resource *rsc = CALLOC_STRUCT(etna_resource); > > @@ -364,11 +361,10 @@ etna_resource_from_handle(struct pipe_screen *pscreen, > > /* We will be using the RS to copy with this resource, so we must > * ensure that it is appropriately aligned for the RS requirements. */ > - unsigned paddingX = ETNA_RS_WIDTH_MASK + 1; > - unsigned paddingY = (ETNA_RS_HEIGHT_MASK + 1) * screen->specs.pixel_pipes; > + level->padded_width = level->width; > + level->padded_height = level->height; > + etna_adjust_rs_align(&level->padded_width, &level->padded_height); > > - level->padded_width = align(level->width, paddingX); > - level->padded_height = align(level->height, paddingY); > level->layer_stride = level->stride * > util_format_get_nblocksy(prsc->format, > > level->padded_height); > > diff --git a/src/gallium/drivers/etnaviv/etnaviv_translate.h > b/src/gallium/drivers/etnaviv/etnaviv_translate.h > index cbbfdf23d93d..0761251a3694 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_translate.h > +++ b/src/gallium/drivers/etnaviv/etnaviv_translate.h > @@ -37,6 +37,7 @@ > #include "hw/state_3d.xml.h" > > #include "util/u_format.h" > +#include "util/u_math.h" > > #include <stdio.h> > > @@ -405,6 +406,18 @@ etna_layout_multiple(unsigned layout, unsigned > pixel_pipes, bool rs_align, > } > } > > +static inline void etna_adjust_rs_align(unsigned num_pixelpipes, > + unsigned *paddingX, unsigned > *paddingY) > +{ > + unsigned alignX = ETNA_RS_WIDTH_MASK + 1; > + unsigned alignY = (ETNA_RS_HEIGHT_MASK + 1) * num_pixelpipes; > + > + if (paddingX) > + *paddingX = align(*paddingX, alignX); > + if (paddingY) > + *paddingY = align(*paddingY, alignY); > +} > + > static inline uint32_t > translate_clear_depth_stencil(enum pipe_format format, float depth, > unsigned stencil) > -- > 2.11.0 > greets -- Christian Gmeiner, MSc https://christian-gmeiner.info _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev