compiler: add VS meta shaders for copying images to memories

Because of the 2D nature of the images, INTEL_CMD_META_VS_POINTS needs to draw
(width * height) points.  The meta shaders generated here are suboptimal.  The
meta compiler uses fs_generator and align1 mode internally.  We will need to
support vec4_generator to generate better shaders.
diff --git a/icd/intel/cmd_pipeline.c b/icd/intel/cmd_pipeline.c
index a4a1f9d..c951334 100644
--- a/icd/intel/cmd_pipeline.c
+++ b/icd/intel/cmd_pipeline.c
@@ -2357,6 +2357,17 @@
         consts[1] = meta->src.x;
         const_count = 2;
         break;
+    case INTEL_DEV_META_VS_COPY_R8_TO_MEM:
+    case INTEL_DEV_META_VS_COPY_R16_TO_MEM:
+    case INTEL_DEV_META_VS_COPY_R32_TO_MEM:
+    case INTEL_DEV_META_VS_COPY_R32G32_TO_MEM:
+    case INTEL_DEV_META_VS_COPY_R32G32B32A32_TO_MEM:
+        consts[0] = meta->src.x;
+        consts[1] = meta->src.y;
+        consts[2] = meta->width;
+        consts[3] = meta->dst.x;
+        const_count = 4;
+        break;
     default:
         assert(!"unknown meta shader id");
         const_count = 0;
@@ -3073,7 +3084,7 @@
 
         if (meta->mode == INTEL_CMD_META_VS_POINTS) {
             gen7_3DPRIMITIVE(cmd, GEN6_3DPRIM_POINTLIST, false,
-                    meta->width, 0, 1, 0, 0);
+                    meta->width * meta->height, 0, 1, 0, 0);
         } else {
             gen7_3DPRIMITIVE(cmd, GEN6_3DPRIM_RECTLIST, false, 3, 0, 1, 0, 0);
         }
@@ -3089,7 +3100,7 @@
 
         if (meta->mode == INTEL_CMD_META_VS_POINTS) {
             gen6_3DPRIMITIVE(cmd, GEN6_3DPRIM_POINTLIST, false,
-                    meta->width, 0, 1, 0, 0);
+                    meta->width * meta->height, 0, 1, 0, 0);
         } else {
             gen6_3DPRIMITIVE(cmd, GEN6_3DPRIM_RECTLIST, false, 3, 0, 1, 0, 0);
         }