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
