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);