i965: Set execution size to 8 for instructions with force_sechalf set.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 11 Jul 2014 00:49:36 +0000 (17:49 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 16 Jul 2014 05:09:49 +0000 (22:09 -0700)
Both inst->force_uncompressed and inst->force_sechalf mean that the
generated instruction should be uncompressed and have an execution size
of 8.  We don't require the visitor to set both flags - setting
inst->force_sechalf by itself is supposed to be enough.

On Gen4-7, guess_execution_size() demoted instructions to 8-wide based
on the default compression state.  On Gen8+, we instead set a default
execution size, which worked great...except that we forgot to check
inst->force_sechalf when deciding whether to use 8 or 16.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Cc: mesa-stable@lists.freedesktop.org
src/mesa/drivers/dri/i965/gen8_fs_generator.cpp

index 02e28cf9708573bf7c9db2413c74f29476283abb..2924820347f229334f97b821c80c966588e01043 100644 (file)
@@ -921,7 +921,7 @@ gen8_fs_generator::generate_code(exec_list *instructions)
       default_state.mask_control = ir->force_writemask_all;
       default_state.flag_subreg_nr = ir->flag_subreg;
 
-      if (dispatch_width == 16 && !ir->force_uncompressed)
+      if (dispatch_width == 16 && !ir->force_uncompressed && !ir->force_sechalf)
          default_state.exec_size = BRW_EXECUTE_16;
       else
          default_state.exec_size = BRW_EXECUTE_8;