Module: Mesa Branch: master Commit: 27715c73ff84349466f62df0023863acd477f262 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=27715c73ff84349466f62df0023863acd477f262
Author: Kenneth Graunke <kenn...@whitecape.org> Date: Sat Oct 15 03:18:36 2016 -0700 i965: Make split_virtual_grfs() call compact_virtual_grfs(). Post-splitting, VGRFs have a maximum size (MAX_VGRF_SIZE). This is required by the register allocator, as we have to create classes for each size of VGRF. We can (and do) allocate virtual registers larger than MAX_VGRF_SIZE, but we must ensure that they are splittable. split_virtual_grfs() asserts that the post-splitting register size is in range. Unfortunately, these trip for completely dead registers which are too large - we only set split points for live registers. So dead ones are never split, and if they happened to be too large, they'd trip asserts. To fix this, call compact_virtual_grfs() to eliminate dead registers before splitting. v2: Add a comment written by Iago. Cc: mesa-sta...@lists.freedesktop.org Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Iago Toral Quiroga <ito...@igalia.com> Reviewed-by: Timothy Arceri <timothy.arc...@collabora.com> --- src/mesa/drivers/dri/i965/brw_fs.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 1c7a6e6..7738a47 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -1687,6 +1687,12 @@ fs_visitor::assign_gs_urb_setup() void fs_visitor::split_virtual_grfs() { + /* Compact the register file so we eliminate dead vgrfs. This + * only defines split points for live registers, so if we have + * too large dead registers they will hit assertions later. + */ + compact_virtual_grfs(); + int num_vars = this->alloc.count; /* Count the total number of registers */ _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit