To implement dual source blending in SIMD16 we need to send two messages: SIMD8_DUALSRC_LO and SIMD8_DUALSRC_HI (as they're named in the BSpec/PRM).
These are called
in the i965 driver.
Note that the PRM says
> If multiple SIMD8 Dual Source messages are delivered by the pixel shader
> thread, each SIMD8_DUALSRC_LO message must be issued before the
> SIMD8_DUALSRC_HI message with the same Slot Group Select setting.
I am working on this
I have just sent a patch to the mailing list for review:
(In reply to comment #0)
> Note that the PRM says
> > If multiple SIMD8 Dual Source messages are delivered by the pixel shader
> > thread, each SIMD8_DUALSRC_LO message must be issued before the
> > SIMD8_DUALSRC_HI message with the same Slot Group Select setting.
I think this does not require any actions. If I am not wrong we are always using the same Slot Group Select (0) for all 8 and 16 pixel dispatches.
(In reply to Iago Toral from comment #2)
> I have just sent a patch to the mailing list for review:
That patch was made obsolete by Jason's FB write code rewrite some months ago, I have sent an updated version:
Author: Iago Toral Quiroga <firstname.lastname@example.org>
Date: Thu Mar 5 09:43:38 2015 +0100
i965/fs: Implement SIMD16 dual source blending.
From the SNB PRM, volume 4, part 1, page 193:
"The dual source render target messages only have SIMD8 forms due to
maximum message length limitations. SIMD16 pixel shaders must send two of
these messages to cover all of the pixels. Each message contains two colors
(4 channels each) for each pixel in the message payload."
Reviewed-by: Jason Ekstrand <email@example.com>