From: Kenneth Graunke Date: Fri, 15 May 2015 17:08:19 +0000 (-0700) Subject: i965: Optimize VUE map comparisons. X-Git-Tag: upstream/17.1.0~16311 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0e23c246c0eb84bd46dfdfe6babe3762e49c58d2;p=platform%2Fupstream%2Fmesa.git i965: Optimize VUE map comparisons. The entire VUE map is computed based on the slots_valid bitfield; calling brw_compute_vue_map on the same bitfield will return the same result. So we can simply compare those. struct brw_vue_map is 136 bytes; doing a single 8-byte comparison is much cheaper and should work just as well. Signed-off-by: Kenneth Graunke Reviewed-by: Chris Forbes --- diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c index 04d9f3f..16ea684 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.c +++ b/src/mesa/drivers/dri/i965/brw_gs.c @@ -356,8 +356,8 @@ brw_upload_gs_prog(struct brw_context *brw) } brw->gs.base.prog_data = &brw->gs.prog_data->base.base; - if (memcmp(&brw->gs.prog_data->base.vue_map, &brw->vue_map_geom_out, - sizeof(brw->vue_map_geom_out)) != 0) { + if (brw->gs.prog_data->base.vue_map.slots_valid != + brw->vue_map_geom_out.slots_valid) { brw->vue_map_geom_out = brw->gs.prog_data->base.vue_map; brw->ctx.NewDriverState |= BRW_NEW_VUE_MAP_GEOM_OUT; } diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index 05457d4..4e0d34f 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -368,8 +368,8 @@ brw_upload_vs_prog(struct brw_context *brw) } brw->vs.base.prog_data = &brw->vs.prog_data->base.base; - if (memcmp(&brw->vs.prog_data->base.vue_map, &brw->vue_map_geom_out, - sizeof(brw->vue_map_geom_out)) != 0) { + if (brw->vs.prog_data->base.vue_map.slots_valid != + brw->vue_map_geom_out.slots_valid) { brw->vue_map_vs = brw->vs.prog_data->base.vue_map; brw->ctx.NewDriverState |= BRW_NEW_VUE_MAP_VS; if (brw->gen < 6) {