v3dv: prepack VCM_CACHE_SIZE

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c
index 81131d8..cc29ba8 100644
--- a/src/broadcom/vulkan/v3dv_cmd_buffer.c
+++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c
@@ -1597,10 +1597,7 @@
       }
    }
 
-   cl_emit(&job->bcl, VCM_CACHE_SIZE, vcm) {
-      vcm.number_of_16_vertex_batches_for_binning = pipeline->vpm_cfg_bin.Vc;
-      vcm.number_of_16_vertex_batches_for_rendering = pipeline->vpm_cfg.Vc;
-   }
+   cl_emit_prepacked(&job->bcl, &pipeline->vcm_cache_size);
 
    cl_emit(&job->bcl, GL_SHADER_STATE, state) {
       state.address = v3dv_cl_address(job->indirect.bo,
diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c
index 338af12..3e218a5 100644
--- a/src/broadcom/vulkan/v3dv_pipeline.c
+++ b/src/broadcom/vulkan/v3dv_pipeline.c
@@ -941,6 +941,18 @@
    }
 }
 
+static void
+pack_vcm_cache_size(struct v3dv_pipeline *pipeline)
+{
+   assert(sizeof(pipeline->vcm_cache_size) ==
+          cl_packet_length(VCM_CACHE_SIZE));
+
+   v3dv_pack(pipeline->vcm_cache_size, VCM_CACHE_SIZE, vcm) {
+      vcm.number_of_16_vertex_batches_for_binning = pipeline->vpm_cfg_bin.Vc;
+      vcm.number_of_16_vertex_batches_for_rendering = pipeline->vpm_cfg.Vc;
+   }
+}
+
 static VkResult
 pipeline_init(struct v3dv_pipeline *pipeline,
               struct v3dv_device *device,
@@ -984,6 +996,7 @@
    }
 
    pack_shader_state_record(pipeline);
+   pack_vcm_cache_size(pipeline);
 
    return result;
 }
diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h
index 3087df2..6c03739 100644
--- a/src/broadcom/vulkan/v3dv_private.h
+++ b/src/broadcom/vulkan/v3dv_private.h
@@ -619,6 +619,7 @@
     */
    uint8_t cfg_bits[cl_packet_length(CFG_BITS)];
    uint8_t shader_state_record[cl_packet_length(GL_SHADER_STATE_RECORD)];
+   uint8_t vcm_cache_size[cl_packet_length(VCM_CACHE_SIZE)];
 };
 
 uint32_t v3dv_physical_device_api_version(struct v3dv_physical_device *dev);