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

Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Oct 30 08:18:09 2020 -0400

zink: add util function for checking whether shader descriptor is buffer from 
program

Reviewed-by: Dave Airlie <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9543>

---

 src/gallium/drivers/zink/zink_program.c | 24 ++++++++++++++++++++++++
 src/gallium/drivers/zink/zink_program.h |  3 +++
 2 files changed, 27 insertions(+)

diff --git a/src/gallium/drivers/zink/zink_program.c 
b/src/gallium/drivers/zink/zink_program.c
index f47b3754645..638a74d5daa 100644
--- a/src/gallium/drivers/zink/zink_program.c
+++ b/src/gallium/drivers/zink/zink_program.c
@@ -709,6 +709,30 @@ zink_program_get_descriptor_usage(struct zink_context 
*ctx, enum pipe_shader_typ
    return 0;
 }
 
+bool
+zink_program_descriptor_is_buffer(struct zink_context *ctx, enum 
pipe_shader_type stage, enum zink_descriptor_type type, unsigned i)
+{
+   struct zink_shader *zs = NULL;
+   switch (stage) {
+   case PIPE_SHADER_VERTEX:
+   case PIPE_SHADER_TESS_CTRL:
+   case PIPE_SHADER_TESS_EVAL:
+   case PIPE_SHADER_GEOMETRY:
+   case PIPE_SHADER_FRAGMENT:
+      zs = ctx->gfx_stages[stage];
+      break;
+   case PIPE_SHADER_COMPUTE: {
+      zs = ctx->compute_stage;
+      break;
+   }
+   default:
+      unreachable("unknown shader type");
+   }
+   if (!zs)
+      return false;
+   return zink_shader_descriptor_is_buffer(zs, type, i);
+}
+
 static unsigned
 get_num_bindings(struct zink_shader *zs, enum zink_descriptor_type type)
 {
diff --git a/src/gallium/drivers/zink/zink_program.h 
b/src/gallium/drivers/zink/zink_program.h
index 5d7a31688c1..7f30e3f2577 100644
--- a/src/gallium/drivers/zink/zink_program.h
+++ b/src/gallium/drivers/zink/zink_program.h
@@ -137,6 +137,9 @@ zink_program_num_bindings_typed(const struct zink_program 
*pg, enum zink_descrip
 unsigned
 zink_program_num_bindings(const struct zink_program *pg, bool is_compute);
 
+bool
+zink_program_descriptor_is_buffer(struct zink_context *ctx, enum 
pipe_shader_type stage, enum zink_descriptor_type type, unsigned i);
+
 void
 zink_update_gfx_program(struct zink_context *ctx, struct zink_gfx_program 
*prog);
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to