[igt-dev] [PATCH i-g-t 1/9] lib/intel_ctx: Add a intel_ctx_cfg_engine_class helper
Jason Ekstrand
jason at jlekstrand.net
Wed Jul 14 17:31:33 UTC 2021
Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
Acked-by: Daniel Vetter <daniel.vetter at ffwll.ch>
---
lib/intel_ctx.c | 42 +++++++++++++++++++++++++++---------------
lib/intel_ctx.h | 1 +
2 files changed, 28 insertions(+), 15 deletions(-)
diff --git a/lib/intel_ctx.c b/lib/intel_ctx.c
index 5495fa764..f28c15544 100644
--- a/lib/intel_ctx.c
+++ b/lib/intel_ctx.c
@@ -267,6 +267,32 @@ const intel_ctx_t *intel_ctx_create_all_physical(int fd)
return intel_ctx_create(fd, &cfg);
}
+/**
+ * intel_ctx_cfg_engine_class:
+ * @cfg: an intel_ctx_cfg_t
+ * @engine: an engine specifier
+ *
+ * Returns the class for the given engine.
+ */
+int intel_ctx_cfg_engine_class(const intel_ctx_cfg_t *cfg, unsigned int engine)
+{
+ if (cfg->load_balance) {
+ if (engine == 0) {
+ /* This is our virtual engine */
+ return cfg->engines[0].engine_class;
+ } else {
+ /* This is a physical engine */
+ igt_assert(engine - 1 < cfg->num_engines);
+ return cfg->engines[engine - 1].engine_class;
+ }
+ } else if (cfg->num_engines > 0) {
+ igt_assert(engine < cfg->num_engines);
+ return cfg->engines[engine].engine_class;
+ } else {
+ return gem_execbuf_flags_to_engine_class(engine);
+ }
+}
+
/**
* intel_ctx_destroy:
* @fd: open i915 drm file descriptor
@@ -292,19 +318,5 @@ void intel_ctx_destroy(int fd, const intel_ctx_t *ctx)
*/
unsigned int intel_ctx_engine_class(const intel_ctx_t *ctx, unsigned int engine)
{
- if (ctx->cfg.load_balance) {
- if (engine == 0) {
- /* This is our virtual engine */
- return ctx->cfg.engines[0].engine_class;
- } else {
- /* This is a physical engine */
- igt_assert(engine - 1 < ctx->cfg.num_engines);
- return ctx->cfg.engines[engine - 1].engine_class;
- }
- } else if (ctx->cfg.num_engines) {
- igt_assert(engine < ctx->cfg.num_engines);
- return ctx->cfg.engines[engine].engine_class;
- } else {
- return gem_execbuf_flags_to_engine_class(engine);
- }
+ return intel_ctx_cfg_engine_class(&ctx->cfg, engine);
}
diff --git a/lib/intel_ctx.h b/lib/intel_ctx.h
index d4cb435a7..9649f6d96 100644
--- a/lib/intel_ctx.h
+++ b/lib/intel_ctx.h
@@ -52,6 +52,7 @@ typedef struct intel_ctx_cfg {
intel_ctx_cfg_t intel_ctx_cfg_for_engine(unsigned int class, unsigned int inst);
intel_ctx_cfg_t intel_ctx_cfg_all_physical(int fd);
+int intel_ctx_cfg_engine_class(const intel_ctx_cfg_t *cfg, unsigned int engine);
/**
* intel_ctx_t:
--
2.31.1
More information about the igt-dev
mailing list