This is inspired by the BSpec, vol2a 3D Pipeline - Overview: 3D Pipeline / 3D Pipeline State Overview / Push Constant URB Allocation. In particular, the last paragraph.
The new VS change fixes vertex scrambling in GLBenchmark PRO; the old VS change is just for good measure/symmetry. NOTE: This is a candidate for stable release branches. Signed-off-by: Kenneth Graunke <[email protected]> --- src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 4 +++- src/mesa/drivers/dri/i965/brw_vs_emit.c | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) I apologize for not having a specific quote from the spec. The text I cited gave me the idea for the patch, but doesn't definitively say "yes, this is required!". diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index 5df2470..1119842 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -2287,7 +2287,9 @@ vec4_visitor::emit_urb_writes() inst->offset = (max_usable_mrf - base_mrf) / 2; } - if (intel->gen == 6) + if (intel->gen == 7) + c->prog_data.urb_entry_size = ALIGN(c->vue_map.num_slots, 8) / 4; + else if (intel->gen == 6) c->prog_data.urb_entry_size = ALIGN(c->vue_map.num_slots, 8) / 8; else c->prog_data.urb_entry_size = ALIGN(c->vue_map.num_slots, 4) / 4; diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index 2b4b13a..9bfe82c 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -407,7 +407,12 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c ) */ attributes_in_vue = MAX2(c->vue_map.num_slots, c->nr_inputs); - if (intel->gen == 6) { + if (intel->gen == 7) { + /* Ivybridge counts in 512-bit units, but still needs the larger + * alignment restriction. + */ + c->prog_data.urb_entry_size = ALIGN(attributes_in_vue, 8) / 4; + } else if (intel->gen == 6) { /* Each attribute is 32 bytes (2 vec4s), so dividing by 8 gives us the * number of 128-byte (1024-bit) units. */ -- 1.7.7.1 _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
