i965/fs: Move up Gen6 no16 check to emit_fb_writes().
authorFrancisco Jerez <currojerez@riseup.net>
Wed, 15 Jul 2015 15:50:59 +0000 (18:50 +0300)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 29 Jul 2015 11:12:47 +0000 (14:12 +0300)
And update the comment.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp

index 1313a3c0df2d50636333e0a4657f0cb5ae72b0ed..564d69404ba897481b017e6f01199b1f33a62d27 100644 (file)
@@ -1572,15 +1572,6 @@ fs_visitor::emit_single_fb_write(const fs_builder &bld,
    }
 
    if (source_depth_to_render_target) {
-      if (devinfo->gen == 6) {
-        /* For outputting oDepth on gen6, SIMD8 writes have to be
-         * used.  This would require SIMD8 moves of each half to
-         * message regs, kind of like pre-gen5 SIMD16 FB writes.
-         * Just bail on doing so for now.
-         */
-        no16("Missing support for simd16 depth writes on gen6\n");
-      }
-
       if (prog->OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) {
         /* Hand over gl_FragDepth. */
         assert(this->frag_depth.file != BAD_FILE);
@@ -1643,6 +1634,17 @@ fs_visitor::emit_fb_writes()
    brw_wm_prog_key *key = (brw_wm_prog_key*) this->key;
 
    fs_inst *inst = NULL;
+
+   if (source_depth_to_render_target && devinfo->gen == 6) {
+      /* For outputting oDepth on gen6, SIMD8 writes have to be used.  This
+       * would require SIMD8 moves of each half to message regs, e.g. by using
+       * the SIMD lowering pass.  Unfortunately this is more difficult than it
+       * sounds because the SIMD8 single-source message lacks channel selects
+       * for the second and third subspans.
+       */
+      no16("Missing support for simd16 depth writes on gen6\n");
+   }
+
    if (do_dual_src) {
       const fs_builder abld = bld.annotate("FB dual-source write");