tgsi: introduce NonHelperMask
authorDave Airlie <airlied@redhat.com>
Mon, 21 Mar 2016 21:50:37 +0000 (07:50 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 30 Mar 2016 23:13:50 +0000 (09:13 +1000)
This is a mask of which of the current 2x2 grid are non-helper
invocations. This allows us to mask off the helper invocations
later for the image operations.

Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/auxiliary/tgsi/tgsi_exec.c
src/gallium/auxiliary/tgsi/tgsi_exec.h

index a44a05c49f4f4e8150e031c3236a2084117d036d..fa1c9161bcce82d6f7c7d43d409edb6f34bde0a9 100644 (file)
@@ -5199,6 +5199,8 @@ tgsi_exec_machine_run( struct tgsi_exec_machine *mach )
       default_mask = 0x1;
    }
 
+   if (mach->NonHelperMask == 0)
+      mach->NonHelperMask = default_mask;
    mach->CondMask = default_mask;
    mach->LoopMask = default_mask;
    mach->ContMask = default_mask;
index 8b5a5806602ebfb8cdc8beaab3383348809127ec..6bcf45b4dae6ace6dc2ec88843327458ca6d1afb 100644 (file)
@@ -312,6 +312,9 @@ struct tgsi_exec_machine
    struct tgsi_exec_vector       QuadPos;
    float                         Face;    /**< +1 if front facing, -1 if back facing */
    bool                          flatshade_color;
+
+   /* See GLSL 4.50 specification for definition of helper invocations */
+   uint NonHelperMask;  /**< non-helpers */
    /* Conditional execution masks */
    uint CondMask;  /**< For IF/ELSE/ENDIF */
    uint LoopMask;  /**< For BGNLOOP/ENDLOOP */