summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2015-05-15 10:08:19 -0700
committerKenneth Graunke <[email protected]>2015-09-03 22:31:04 -0700
commit0e23c246c0eb84bd46dfdfe6babe3762e49c58d2 (patch)
tree8b48088c7dde14968ef3beef0b6b350cc5c7e3e0
parent6e03377daf90c6f6ac953a08e3a8f8f5caf9abf6 (diff)
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 <[email protected]> Reviewed-by: Chris Forbes <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_gs.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c
index 04d9f3f25d9..16ea6846285 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 05457d4a3fe..4e0d34f6c6f 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) {