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

Author: Alyssa Rosenzweig <aly...@rosenzweig.io>
Date:   Tue May  4 22:20:39 2021 -0400

asahi: Augment Gallium key with blend state

Signed-off-by: Alyssa Rosenzweig <aly...@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10720>

---

 src/gallium/drivers/asahi/agx_state.c | 13 ++++++++-----
 src/gallium/drivers/asahi/agx_state.h |  5 +++++
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/asahi/agx_state.c 
b/src/gallium/drivers/asahi/agx_state.c
index d8875e5c87e..4dfdf366862 100644
--- a/src/gallium/drivers/asahi/agx_state.c
+++ b/src/gallium/drivers/asahi/agx_state.c
@@ -606,7 +606,7 @@ agx_create_shader_state(struct pipe_context *ctx,
 
 static bool
 agx_update_shader(struct agx_context *ctx, struct agx_compiled_shader **out,
-                  enum pipe_shader_type stage, struct agx_shader_key *key)
+                  enum pipe_shader_type stage, struct asahi_shader_key *key)
 {
    struct agx_uncompiled_shader *so = ctx->stage[stage].shader;
    assert(so != NULL);
@@ -626,7 +626,7 @@ agx_update_shader(struct agx_context *ctx, struct 
agx_compiled_shader **out,
    util_dynarray_init(&binary, NULL);
 
    nir_shader *nir = nir_shader_clone(NULL, so->nir);
-   agx_compile_shader_nir(nir, key, &binary, &compiled->info);
+   agx_compile_shader_nir(nir, &key->base, &binary, &compiled->info);
 
    /* TODO: emit this properly */
    nir_variable_mode varying_mode = (nir->info.stage == MESA_SHADER_FRAGMENT) ?
@@ -705,8 +705,11 @@ agx_update_vs(struct agx_context *ctx)
       key.vbuf_strides[i] = ctx->vertex_buffers[i].stride / 4; // TODO: 
alignment
    }
 
-   return agx_update_shader(ctx, &ctx->vs, PIPE_SHADER_VERTEX,
-                            (struct agx_shader_key *) &key);
+   struct asahi_shader_key akey = {
+      .base.vs = key
+   };
+
+   return agx_update_shader(ctx, &ctx->vs, PIPE_SHADER_VERTEX, &akey);
 }
 
 static bool
@@ -717,7 +720,7 @@ agx_update_fs(struct agx_context *ctx)
    };
 
    return agx_update_shader(ctx, &ctx->fs, PIPE_SHADER_FRAGMENT,
-                            (struct agx_shader_key *) &key);
+                            (struct asahi_shader_key *) &key);
 }
 
 static void
diff --git a/src/gallium/drivers/asahi/agx_state.h 
b/src/gallium/drivers/asahi/agx_state.h
index 9cd84c139de..0cbabbaf2fc 100644
--- a/src/gallium/drivers/asahi/agx_state.h
+++ b/src/gallium/drivers/asahi/agx_state.h
@@ -107,6 +107,11 @@ struct agx_blend {
    };
 };
 
+struct asahi_shader_key {
+   struct agx_shader_key base;
+   struct agx_blend blend;
+};
+
 #define AGX_DIRTY_VERTEX (1 << 0)
 
 struct agx_context {

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

Reply via email to