If the tile has any pixels with anisotropic GGX, we evaluate the entire tile with anisotropic GGX rather than first evaluating pixels with anisotropic GGX and then pixels with isotropic GGX.
Before
; --- Statistics for Deferred.compute on GCN (Pitcairn) ---
; SGPRs: 92 out of 104 used
; VGPRs: 128 out of 256 used
; LDS: 0 out of 32768 bytes used
; 0 bytes scratch space used
; Instructions: 2676 ALU, 183 Control Flow, 50 TFETCH
After
; --- Statistics for Deferred.compute on GCN (Pitcairn) ---
; SGPRs: 94 out of 104 used
; VGPRs: 128 out of 256 used
; LDS: 0 out of 32768 bytes used
; 0 bytes scratch space used
; Instructions: 2583 ALU, 183 Control Flow, 50 TFETCH
BEFORE
; Disassembly for GCN (Pitcairn)
; -------- Statistics ---------------------
; SGPRs: 100 out of 104 used
; VGPRs: 156 out of 256 used
; LDS: 0 out of 32768 bytes used
; 0 bytes scratch space used
; Instructions: 2652 ALU, 178 Control Flow, 78 TFETCH
AFTER
; Disassembly for GCN (Pitcairn)
; -------- Statistics ---------------------
; SGPRs: 100 out of 104 used
; VGPRs: 156 out of 256 used
; LDS: 0 out of 32768 bytes used
; 0 bytes scratch space used
; Instructions: 2651 ALU, 160 Control Flow, 82 TFETCH
There are 2 extra texture fetches (at the end of one of the area light loops) rather than 4 - the statistics are being pessimistic. These are repeated texture fetches and are a 100% cache hit.