2017-10-30 17:17 GMT+01:00 Wladimir J. van der Laan <laa...@gmail.com>: > This will be shared with the texture descriptor path. > > Signed-off-by: Wladimir J. van der Laan <laa...@gmail.com>
Reviewed-by: Christian Gmeiner <christian.gmei...@gmail.com> > --- > src/gallium/drivers/etnaviv/etnaviv_texture.c | 40 > +++++++++++++++++---------- > src/gallium/drivers/etnaviv/etnaviv_texture.h | 5 ++++ > 2 files changed, 30 insertions(+), 15 deletions(-) > > diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture.c > b/src/gallium/drivers/etnaviv/etnaviv_texture.c > index 335a2df..55942a9 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_texture.c > +++ b/src/gallium/drivers/etnaviv/etnaviv_texture.c > @@ -164,22 +164,10 @@ etna_resource_sampler_compatible(struct etna_resource > *res) > return true; > } > > -static struct pipe_sampler_view * > -etna_create_sampler_view(struct pipe_context *pctx, struct pipe_resource > *prsc, > - const struct pipe_sampler_view *so) > +struct etna_resource * > +etna_texture_handle_incompatible(struct pipe_context *pctx, struct > pipe_resource *prsc) > { > - struct etna_sampler_view *sv = CALLOC_STRUCT(etna_sampler_view); > struct etna_resource *res = etna_resource(prsc); > - struct etna_context *ctx = etna_context(pctx); > - const uint32_t format = translate_texture_format(so->format); > - const bool ext = !!(format & EXT_FORMAT); > - const uint32_t swiz = get_texture_swiz(so->format, so->swizzle_r, > - so->swizzle_g, so->swizzle_b, > - so->swizzle_a); > - > - if (!sv) > - return NULL; > - > if (!etna_resource_sampler_compatible(res)) { > /* The original resource is not compatible with the sampler. > * Allocate an appropriately tiled texture. */ > @@ -194,11 +182,33 @@ etna_create_sampler_view(struct pipe_context *pctx, > struct pipe_resource *prsc, > } > > if (!res->texture) { > - free(sv); > return NULL; > } > res = etna_resource(res->texture); > } > + return res; > +} > + > +static struct pipe_sampler_view * > +etna_create_sampler_view(struct pipe_context *pctx, struct pipe_resource > *prsc, > + const struct pipe_sampler_view *so) > +{ > + struct etna_sampler_view *sv = CALLOC_STRUCT(etna_sampler_view); > + struct etna_context *ctx = etna_context(pctx); > + const uint32_t format = translate_texture_format(so->format); > + const bool ext = !!(format & EXT_FORMAT); > + const uint32_t swiz = get_texture_swiz(so->format, so->swizzle_r, > + so->swizzle_g, so->swizzle_b, > + so->swizzle_a); > + > + if (!sv) > + return NULL; > + > + struct etna_resource *res = etna_texture_handle_incompatible(pctx, prsc); > + if (!res) { > + free(sv); > + return NULL; > + } > > sv->base = *so; > pipe_reference_init(&sv->base.reference, 1); > diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture.h > b/src/gallium/drivers/etnaviv/etnaviv_texture.h > index a7a67fc..9d1789e 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_texture.h > +++ b/src/gallium/drivers/etnaviv/etnaviv_texture.h > @@ -72,4 +72,9 @@ etna_sampler_view(struct pipe_sampler_view *view) > void > etna_texture_init(struct pipe_context *pctx); > > +/* If the original resource is not compatible with the sampler. Allocate > + * an appropriately tiled texture. */ > +struct etna_resource * > +etna_texture_handle_incompatible(struct pipe_context *pctx, struct > pipe_resource *prsc); > + > #endif > -- > 2.7.4 > -- 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