Module: Mesa
Branch: master
Commit: e7e02435a88ec3262c556f56d2e279753b81f2dd
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e7e02435a88ec3262c556f56d2e279753b81f2dd

Author: Jonathan Marek <jonat...@marek.ca>
Date:   Sat Aug 10 16:44:07 2019 -0400

etnaviv: get addressing mode from tiling layout

Remove the "addressing_mode" state, which is currently set incorrectly, and
instead deduce the addressing mode from the tiling layout.

Signed-off-by: Jonathan Marek <jonat...@marek.ca>
Reviewed-by: Christian Gmeiner <christian.gmei...@gmail.com>

---

 src/gallium/drivers/etnaviv/etnaviv_resource.c      | 17 +++++------------
 src/gallium/drivers/etnaviv/etnaviv_resource.h      |  9 +--------
 src/gallium/drivers/etnaviv/etnaviv_texture.c       |  1 -
 src/gallium/drivers/etnaviv/etnaviv_texture_state.c |  2 +-
 src/gallium/drivers/etnaviv/etnaviv_transfer.c      |  3 +--
 5 files changed, 8 insertions(+), 24 deletions(-)

diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c 
b/src/gallium/drivers/etnaviv/etnaviv_resource.c
index b03681cc5c0..6cd5eca2930 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_resource.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c
@@ -204,8 +204,7 @@ static bool is_rs_align(struct etna_screen *screen,
 /* Create a new resource object, using the given template info */
 struct pipe_resource *
 etna_resource_alloc(struct pipe_screen *pscreen, unsigned layout,
-                    enum etna_resource_addressing_mode mode, uint64_t modifier,
-                    const struct pipe_resource *templat)
+                    uint64_t modifier, const struct pipe_resource *templat)
 {
    struct etna_screen *screen = etna_screen(pscreen);
    struct etna_resource *rsc;
@@ -299,7 +298,6 @@ etna_resource_alloc(struct pipe_screen *pscreen, unsigned 
layout,
    rsc->base.nr_samples = nr_samples;
    rsc->layout = layout;
    rsc->halign = halign;
-   rsc->addressing_mode = mode;
 
    pipe_reference_init(&rsc->base.reference, 1);
 
@@ -340,13 +338,11 @@ etna_resource_create(struct pipe_screen *pscreen,
 {
    struct etna_screen *screen = etna_screen(pscreen);
 
-   /* Figure out what tiling and address mode to use -- for now, assume that
-    * texture cannot be linear. there is a capability LINEAR_TEXTURE_SUPPORT
-    * (supported on gc880 and gc2000 at least), but not sure how it works.
+   /* Figure out what tiling to use -- we always use tiled layouts,
+    * except for scanout/dmabuf (which don't go through this path)
     * Buffers always have LINEAR layout.
     */
    unsigned layout = ETNA_LAYOUT_LINEAR;
-   enum etna_resource_addressing_mode mode = ETNA_ADDRESSING_MODE_TILED;
 
    if (etna_resource_sampler_only(templat)) {
       /* The buffer is only used for texturing, so create something
@@ -390,7 +386,7 @@ etna_resource_create(struct pipe_screen *pscreen,
       layout = ETNA_LAYOUT_LINEAR;
 
    /* modifier is only used for scanout surfaces, so safe to use LINEAR here */
-   return etna_resource_alloc(pscreen, layout, mode, DRM_FORMAT_MOD_LINEAR, 
templat);
+   return etna_resource_alloc(pscreen, layout, DRM_FORMAT_MOD_LINEAR, templat);
 }
 
 enum modifier_priority {
@@ -470,8 +466,7 @@ etna_resource_create_modifiers(struct pipe_screen *pscreen,
     */
    tmpl.bind |= PIPE_BIND_SCANOUT;
 
-   return etna_resource_alloc(pscreen, modifier_to_layout(modifier),
-                              ETNA_ADDRESSING_MODE_TILED, modifier, &tmpl);
+   return etna_resource_alloc(pscreen, modifier_to_layout(modifier), modifier, 
&tmpl);
 }
 
 static void
@@ -550,8 +545,6 @@ etna_resource_from_handle(struct pipe_screen *pscreen,
    rsc->seqno = 1;
    rsc->layout = modifier_to_layout(handle->modifier);
    rsc->halign = TEXTURE_HALIGN_FOUR;
-   rsc->addressing_mode = ETNA_ADDRESSING_MODE_TILED;
-
 
    level->width = tmpl->width0;
    level->height = tmpl->height0;
diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.h 
b/src/gallium/drivers/etnaviv/etnaviv_resource.h
index 90e04f5159b..5beb8454afc 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_resource.h
+++ b/src/gallium/drivers/etnaviv/etnaviv_resource.h
@@ -60,11 +60,6 @@ struct etna_resource_level {
    struct util_dynarray *patch_offsets;
 };
 
-enum etna_resource_addressing_mode {
-   ETNA_ADDRESSING_MODE_TILED = 0,
-   ETNA_ADDRESSING_MODE_LINEAR,
-};
-
 /* status of queued up but not flushed reads and write operations.
  * In _transfer_map() we need to know if queued up rendering needs
  * to be flushed to preserve the order of cpu and gpu access. */
@@ -82,7 +77,6 @@ struct etna_resource {
    /* only lod 0 used for non-texture buffers */
    /* Layout for surface (tiled, multitiled, split tiled, ...) */
    enum etna_surface_layout layout;
-   enum etna_resource_addressing_mode addressing_mode;
    /* Horizontal alignment for texture unit (TEXTURE_HALIGN_*) */
    unsigned halign;
    struct etna_bo *bo; /* Surface video memory */
@@ -169,8 +163,7 @@ etna_screen_resource_alloc_ts(struct pipe_screen *pscreen,
 
 struct pipe_resource *
 etna_resource_alloc(struct pipe_screen *pscreen, unsigned layout,
-                    enum etna_resource_addressing_mode mode, uint64_t modifier,
-                    const struct pipe_resource *templat);
+                    uint64_t modifier, const struct pipe_resource *templat);
 
 void
 etna_resource_screen_init(struct pipe_screen *pscreen);
diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture.c 
b/src/gallium/drivers/etnaviv/etnaviv_texture.c
index 88ed970d660..a38fd1c4a57 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_texture.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_texture.c
@@ -224,7 +224,6 @@ etna_texture_handle_incompatible(struct pipe_context *pctx, 
struct pipe_resource
                            PIPE_BIND_BLENDABLE);
          res->texture =
             etna_resource_alloc(pctx->screen, ETNA_LAYOUT_TILED,
-                                ETNA_ADDRESSING_MODE_TILED,
                                 DRM_FORMAT_MOD_LINEAR, &templat);
       }
 
diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture_state.c 
b/src/gallium/drivers/etnaviv/etnaviv_texture_state.c
index 12c580176f3..8bedb7ee882 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_texture_state.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_texture_state.c
@@ -161,7 +161,7 @@ etna_create_sampler_view_state(struct pipe_context *pctx, 
struct pipe_resource *
       break;
    }
 
-   if (res->addressing_mode == ETNA_ADDRESSING_MODE_LINEAR) {
+   if (res->layout == ETNA_LAYOUT_LINEAR && 
!util_format_is_compressed(so->format)) {
       sv->TE_SAMPLER_CONFIG0 |= 
VIVS_TE_SAMPLER_CONFIG0_ADDRESSING_MODE(TEXTURE_ADDRESSING_MODE_LINEAR);
 
       for (int lod = 0; lod <= res->base.last_level; ++lod)
diff --git a/src/gallium/drivers/etnaviv/etnaviv_transfer.c 
b/src/gallium/drivers/etnaviv/etnaviv_transfer.c
index de2d6ed9ba2..b203b1aadfb 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_transfer.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_transfer.c
@@ -254,8 +254,7 @@ etna_transfer_map(struct pipe_context *pctx, struct 
pipe_resource *prsc,
       templ.bind = PIPE_BIND_RENDER_TARGET;
 
       trans->rsc = etna_resource_alloc(pctx->screen, ETNA_LAYOUT_LINEAR,
-                                       ETNA_ADDRESSING_MODE_TILED, 
DRM_FORMAT_MOD_LINEAR,
-                                       &templ);
+                                       DRM_FORMAT_MOD_LINEAR, &templ);
       if (!trans->rsc) {
          slab_free(&ctx->transfer_pool, trans);
          return NULL;

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to