aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965
diff options
context:
space:
mode:
authorIago Toral Quiroga <[email protected]>2014-06-09 12:00:04 +0200
committerIago Toral Quiroga <[email protected]>2014-06-09 12:00:04 +0200
commitc75f827f129dbb03e92200c9bfc3d82e02ea82f6 (patch)
treef13cda1b3b9364ce17f3ca101d9dce875bb7dbfe /src/mesa/drivers/dri/i965
parentdc2d3a7f5c217a7cee92380fbf503924a9591bea (diff)
i965: Ensure that we end instruction streams properly.
Threads must terminate with a SEND message to a particular shared function, such as a URB write or FB write, so the instruction stream really shouldn't ever end in an IF/ELSE/ENDIF or similar block structure. However, if the instruction stream (incorrectly) ends in a block structure the last block's end pointer will not be set, leading to a crash later on in fs_live_variables::setup_def_use(). It is better to detect this earlier, so assert on that. Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri/i965')
-rw-r--r--src/mesa/drivers/dri/i965/brw_cfg.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_cfg.cpp b/src/mesa/drivers/dri/i965/brw_cfg.cpp
index 6bf99f17f58..9d6eeb37523 100644
--- a/src/mesa/drivers/dri/i965/brw_cfg.cpp
+++ b/src/mesa/drivers/dri/i965/brw_cfg.cpp
@@ -257,6 +257,8 @@ cfg_t::cfg_t(exec_list *instructions)
}
}
+ assert(cur->end);
+
cur->end_ip = ip;
make_block_array();