Add support for CLVK

This patch enables CLVK through the graph API and inside the
CLScheduler. By default the Native platform is selected.
Selecting CLVK can be done via --target=clvk.

Resolves COMPMID-4205 and COMPMID-4206

Change-Id: Ic60744980c6b8a60e776627ea677ed46be88f656
Signed-off-by: Michalis Spyrou <michalis.spyrou@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5475
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
diff --git a/tests/benchmark_examples/RunExample.cpp b/tests/benchmark_examples/RunExample.cpp
index e5dfe74..a23d91e 100644
--- a/tests/benchmark_examples/RunExample.cpp
+++ b/tests/benchmark_examples/RunExample.cpp
@@ -128,7 +128,17 @@
     CLGEMMHeuristicsHandle gemm_h;
     if(opencl_is_available())
     {
-        auto ctx_dev_err = create_opencl_context_and_device();
+        CLBackendType backend_type = CLBackendType::Native;
+        for(auto &arg : example_args->value())
+        {
+            if(arg.find("--target=clvk") != std::string::npos)
+            {
+                backend_type = CLBackendType::Clvk;
+                break;
+            }
+        }
+
+        auto ctx_dev_err = create_opencl_context_and_device(backend_type);
         ARM_COMPUTE_ERROR_ON_MSG(std::get<2>(ctx_dev_err) != CL_SUCCESS, "Failed to create OpenCL context");
         CLScheduler::get()
         .default_init_with_context(std::get<1>(ctx_dev_err), std::get<0>(ctx_dev_err), nullptr, &gemm_h);