summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/v3d/v3d_screen.c2
-rw-r--r--src/gallium/drivers/v3d/v3dx_draw.c7
2 files changed, 9 insertions, 0 deletions
diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c
index 26c41544322..28334aeba4c 100644
--- a/src/gallium/drivers/v3d/v3d_screen.c
+++ b/src/gallium/drivers/v3d/v3d_screen.c
@@ -585,6 +585,8 @@ v3d_get_device_info(struct v3d_screen *screen)
uint32_t minor = (ident1.value >> 0) & 0xf;
screen->devinfo.ver = major * 10 + minor;
+ screen->devinfo.vpm_size = (ident1.value >> 28 & 0xf) * 1024;
+
switch (screen->devinfo.ver) {
case 33:
case 41:
diff --git a/src/gallium/drivers/v3d/v3dx_draw.c b/src/gallium/drivers/v3d/v3dx_draw.c
index 479adb70fdb..bfb4af13ceb 100644
--- a/src/gallium/drivers/v3d/v3dx_draw.c
+++ b/src/gallium/drivers/v3d/v3dx_draw.c
@@ -306,6 +306,13 @@ v3d_emit_gl_shader_state(struct v3d_context *v3d,
}
}
+ cl_emit(&job->bcl, VCM_CACHE_SIZE, vcm) {
+ vcm.number_of_16_vertex_batches_for_binning =
+ v3d->prog.cs->prog_data.vs->vcm_cache_size;
+ vcm.number_of_16_vertex_batches_for_rendering =
+ v3d->prog.vs->prog_data.vs->vcm_cache_size;
+ }
+
cl_emit(&job->bcl, GL_SHADER_STATE, state) {
state.address = cl_address(job->indirect.bo, shader_rec_offset);
state.number_of_attribute_arrays = num_elements_to_emit;