Mesa (main): anv, iris: Enable compute engine with INTEL_COMPUTE_CLASS=1

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 15 09:35:54 UTC 2022


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

Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Wed Nov 17 12:08:25 2021 -0800

anv, iris: Enable compute engine with INTEL_COMPUTE_CLASS=1

If this environment variable is set, then a detected compute engine
will be used as described in docs/envvars.rst.

Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
Reviewed-by: Caio Oliveira <caio.oliveira at intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14395>

---

 docs/envvars.rst                      | 6 ++++++
 src/gallium/drivers/iris/iris_batch.c | 3 ++-
 src/intel/vulkan/anv_device.c         | 2 +-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/docs/envvars.rst b/docs/envvars.rst
index 1503651ff93..027952f1b3d 100644
--- a/docs/envvars.rst
+++ b/docs/envvars.rst
@@ -246,6 +246,12 @@ Intel driver environment variables
    if set to 1, true or yes, then the OpenGL implementation will
    default ``GL_BLACKHOLE_RENDER_INTEL`` to true, thus disabling any
    rendering.
+:envvar:`INTEL_COMPUTE_CLASS`
+   If set to 1, true or yes, then I915_ENGINE_CLASS_COMPUTE will be
+   supported. For OpenGL, iris will attempt to use a compute engine
+   for compute dispatches if one is detected. For Vulkan, anvil will
+   advertise support for a compute queue if a compute engine is
+   detected.
 :envvar:`INTEL_DEBUG`
    a comma-separated list of named flags, which do various things:
 
diff --git a/src/gallium/drivers/iris/iris_batch.c b/src/gallium/drivers/iris/iris_batch.c
index 15eb5229af5..9886497ca25 100644
--- a/src/gallium/drivers/iris/iris_batch.c
+++ b/src/gallium/drivers/iris/iris_batch.c
@@ -49,6 +49,7 @@
 #include "intel/common/intel_gem.h"
 #include "intel/ds/intel_tracepoints.h"
 #include "util/hash_table.h"
+#include "util/debug.h"
 #include "util/set.h"
 #include "util/u_upload_mgr.h"
 
@@ -291,7 +292,7 @@ iris_create_engines_context(struct iris_context *ice, int priority)
    /* Blitter is only supported on Gfx12+ */
    unsigned num_batches = IRIS_BATCH_COUNT - (devinfo->ver >= 12 ? 0 : 1);
 
-   if (false /* Disable for now. We will enable with an env-var. */ &&
+   if (env_var_as_boolean("INTEL_COMPUTE_CLASS", false) &&
        intel_gem_count_engines(engines_info, I915_ENGINE_CLASS_COMPUTE) > 0)
       engine_classes[IRIS_BATCH_COMPUTE] = I915_ENGINE_CLASS_COMPUTE;
 
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 2e3255bbec2..349d14e602d 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -701,7 +701,7 @@ anv_physical_device_init_queue_families(struct anv_physical_device *pdevice)
                                  I915_ENGINE_CLASS_RENDER);
       int g_count = 0;
       int c_count = 0;
-      if (false /* Disable for now. We will enable with an env-var. */)
+      if (env_var_as_boolean("INTEL_COMPUTE_CLASS", false))
          c_count = intel_gem_count_engines(pdevice->engine_info,
                                            I915_ENGINE_CLASS_COMPUTE);
       enum drm_i915_gem_engine_class compute_class =



More information about the mesa-commit mailing list