Set up configure-only flag for validation. First trial with DepthwiseConvoltion

This is needed in order to validate OpenCL kernel run-time compilation, without necessarily running or validating the kernels' execution

- Add a run-time option for our validation suite to only configure one target function, without allocating, running or validating
- Avoid to map/unmap tensors in CLAccessor if no allocation/validation is required
- Create a new Fixture macro that accepts fixtures split into configure/allocate_and_run/reference, and do the last two only if required
- Adjust fixture and validation files for the first trial function(s) (DepthwiseConvolutionLayer)

Signed-off-by: Giorgio Arena <giorgio.arena@arm.com>
Change-Id: I56fa1ce5ef4ac0c86bcabda686cc277ef5ec69c8
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5048
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Manuel Bottini <manuel.bottini@arm.com>
Reviewed-by: Sang-Hoon Park <sang-hoon.park@arm.com>
diff --git a/tests/framework/Framework.h b/tests/framework/Framework.h
index cf854f2..4c2e86c 100644
--- a/tests/framework/Framework.h
+++ b/tests/framework/Framework.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2020 Arm Limited.
+ * Copyright (c) 2017-2021 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -63,6 +63,7 @@
     int                                            num_iterations{ 1 };         /**< Number of iterations per test. */
     float                                          cooldown_sec{ -1.f };        /**< Delay between tests in seconds. */
     LogLevel                                       log_level{ LogLevel::NONE }; /**< Verbosity of the output. */
+    bool                                           configure_only{ false };     /**< Only configure kernels */
 };
 
 /** Information about a test case.
@@ -306,6 +307,21 @@
      * @param[in] instr_info Instruments info to set
      */
     void set_instruments_info(InstrumentsInfo instr_info);
+    /** Get the configure only flag
+     *
+     * @return The current configure only flag.
+     */
+    bool configure_only() const;
+    /** Return whether the new fixture has been called
+     *
+     * @return The current new fixture call flag.
+     */
+    bool new_fixture_call() const;
+    /** Set the new fixture call flag
+     *
+     * @param[in] val Value to set for the flag
+     */
+    void set_new_fixture_call(bool val);
 
 private:
     Framework();
@@ -340,6 +356,8 @@
     bool                   _stop_on_error{ false };
     bool                   _error_on_missing_assets{ false };
     std::vector<Printer *> _printers{};
+    bool                   _configure_only{ false };
+    bool                   _new_fixture_call{ false };
 
     using create_function = std::unique_ptr<Instrument>();
     std::map<InstrumentsDescription, create_function *> _available_instruments{};