mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 00:00:11 +01:00
i965: Reserve space for "Vertex Count" in GS outputs.
v2: Also increment ir->offset in the GS visitor, rather than at the
final assembly generation stage (requested by Paul).
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
parent
94c0a11b19
commit
ad04e396fa
2 changed files with 13 additions and 0 deletions
|
|
@ -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 control 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;
|
||||
|
|
|
|||
|
|
@ -267,6 +267,13 @@ vec4_gs_visitor::emit_urb_write_opcode(bool complete)
|
|||
|
||||
vec4_instruction *inst = emit(GS_OPCODE_URB_WRITE);
|
||||
inst->offset = c->prog_data.control_data_header_size_hwords;
|
||||
|
||||
/* We need to increment Global Offset by 1 to make room for Broadwell's
|
||||
* extra "Vertex Count" payload at the beginning of the URB entry.
|
||||
*/
|
||||
if (brw->gen >= 8)
|
||||
inst->offset++;
|
||||
|
||||
inst->urb_write_flags = BRW_URB_WRITE_PER_SLOT_OFFSET;
|
||||
return inst;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue