From 31de802e7e6428b1b84b42ff555cdb8f87a59a6e Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 20 Jun 2019 01:08:04 -0500 Subject: [PATCH] iris: Use stream uploader for shader draw parameters. Most vertex data lives in user VBOs in IRIS_MEMZONE_OTHER, which typically have high bits set to 0xffff. The shader draw parameters were being uploaded in IRIS_MEMZONE_DYNAMIC, which have high bets set to 0x2. This was causing a lot of ping-ponging of high bits, leading to unnecessary VF cache flushing. Cuts 7.2% of the flushes in the Civizilation VI demo on Kabylake GT2. --- src/gallium/drivers/iris/iris_state.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 0984ae8..13942df 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -5054,7 +5054,7 @@ iris_upload_dirty_render_state(struct iris_context *ice, if (ice->state.vs_uses_draw_params) { if (ice->draw.draw_params_offset == 0) { - u_upload_data(ice->state.dynamic_uploader, 0, sizeof(ice->draw.params), + u_upload_data(ice->ctx.stream_uploader, 0, sizeof(ice->draw.params), 4, &ice->draw.params, &ice->draw.draw_params_offset, &ice->draw.draw_params_res); } @@ -5080,7 +5080,7 @@ iris_upload_dirty_render_state(struct iris_context *ice, } if (ice->state.vs_uses_derived_draw_params) { - u_upload_data(ice->state.dynamic_uploader, 0, + u_upload_data(ice->ctx.stream_uploader, 0, sizeof(ice->draw.derived_params), 4, &ice->draw.derived_params, &ice->draw.derived_draw_params_offset, -- 2.7.4