On 11/30/2013 10:29 AM, Paul Berry wrote: > On 12 November 2013 17:51, Kenneth Graunke <kenn...@whitecape.org > <mailto:kenn...@whitecape.org>> wrote: > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org > <mailto:kenn...@whitecape.org>> > --- > src/mesa/drivers/dri/i965/brw_vec4_gs.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs.c > b/src/mesa/drivers/dri/i965/brw_vec4_gs.c > index b52d646..e802c1e 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_gs.c > +++ b/src/mesa/drivers/dri/i965/brw_vec4_gs.c > @@ -194,6 +194,12 @@ do_gs_prog(struct brw_context *brw, > c.prog_data.output_vertex_size_hwords * 32 * > gp->program.VerticesOut; > output_size_bytes += 32 * > c.prog_data.control_data_header_size_hwords; > > + /* Broadwell stores "Vertex Count" as a full 8 DWord (32 byte) > URB output, > + * which comes before the conttrol header. > + */ > + if (brw->gen >= 8) > + output_size_bytes += 32; > + > assert(output_size_bytes >= 1); > if (output_size_bytes > GEN7_MAX_GS_URB_ENTRY_SIZE_BYTES) > return false; > -- > 1.8.3.2 > > > It looks like changes also need to be made to > vec4_gs_visitor::emit_urb_write_opcode() and > vec4_gs_visitor::emit_control_data_bits() to offset the vertex data and > control data by 32 bytes, and to vec4_gs_visitor::emit_thread_end() to > cause the appropriate data to be written to the vertex count. Are those > changes elsewhere in the series?
I handled that in the gen8_vec4_generator class (introduced in patch 12): The generate_urb_write() function reserves space: void gen8_vec4_generator::generate_urb_write(vec4_instruction *ir, bool vs) { ... int global_offset = ir->offset; /* The GS needs to increment Global Offset by 1 to make room for the extra * "Vertex Count" payload at the beginning. */ if (!vs) ++global_offset; ... } and generate_gs_thread_end() does a SEND with EOT that writes Vertex Count at offset 0. It seems to work pretty well. Sorry for the awkward split in the patch series. --Ken _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev