Re: [Mesa-dev] [PATCH 16/19] etnaviv: GC7000: Factor out incompatible texture handling logic

2017-11-05 Thread Christian Gmeiner
2017-10-30 17:17 GMT+01:00 Wladimir J. van der Laan :
> This will be shared with the texture descriptor path.
>
> Signed-off-by: Wladimir J. van der Laan 

Reviewed-by: Christian Gmeiner 

> ---
>  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


[Mesa-dev] [PATCH 16/19] etnaviv: GC7000: Factor out incompatible texture handling logic

2017-10-30 Thread Wladimir J. van der Laan
This will be shared with the texture descriptor path.

Signed-off-by: Wladimir J. van der Laan 
---
 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

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev