Extend direct convolution (F32/F16/QASYMM8)

The new function can handle different block sizes (M0, N0)

New utility macros have been developed to simplify the work and the
future OpenCL kernel development. In particular the work has been done
to also consider cases with:
- the texture pipe support
- dynamic tensor shape support

Change-Id: Ife4c64baf07517938bb8ad18e6a5f4579345c40f
Signed-off-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5297
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
diff --git a/tests/validation/CL/DirectConvolutionLayer.cpp b/tests/validation/CL/DirectConvolutionLayer.cpp
index e244576..4671d8c 100644
--- a/tests/validation/CL/DirectConvolutionLayer.cpp
+++ b/tests/validation/CL/DirectConvolutionLayer.cpp
@@ -183,7 +183,7 @@
                framework::dataset::make("PadX", { 1, 3, 0, 4 })),
                framework::dataset::make("PadY", { 1, 3, 0, 4 })),
                framework::dataset::make("KernelSize", { 3, 8, 1, 9 })),
-               framework::dataset::make("NumKernels", { 7, 3, 1, 3 })),
+               framework::dataset::make("NumKernels", { 17, 3, 1, 19 })),
                framework::dataset::make("DataType",  DataType::F16)),
                framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU) )),
                framework::dataset::make("DataLayout", DataLayout::NHWC)))
@@ -221,7 +221,7 @@
                framework::dataset::make("PadX", { 1, 3, 0, 4 })),
                framework::dataset::make("PadY", { 1, 3, 0, 4 })),
                framework::dataset::make("KernelSize", { 3, 8, 1, 9 })),
-               framework::dataset::make("NumKernels", { 7, 3, 1, 3 })),
+               framework::dataset::make("NumKernels", { 17, 3, 1, 19 })),
                framework::dataset::make("DataType",  DataType::F32)),
                framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU) )),
                framework::dataset::make("DataLayout", DataLayout::NHWC)))