[Nouveau] Proper gl_SampleMask output

Ilia Mirkin imirkin at alum.mit.edu
Wed Apr 23 15:22:50 PDT 2014


Hello,

I've been trying to add ARB_sample_shading support to nouveau, and am
being defeated by the gl_SampleMask tests. Everything else works fine.
(And naturally the tests pass with the proprietary driver.) I'm trying
to do this for both GT21x, as well as GF100+.

In the GT21x case, it seems like the low bit of method 0x1928 needs to
be set (as well as the second-to-lowest bit), for GF100+, the low bit
of the last dword of the shader header needs to be set.

But exactly which register is the output supposed to go into? It looks
like with the proprietary driver, r0..r3 get the first color output,
and r4 gets the sample mask. However the way that things are set up
with nouveau, r4..r7 get the first color output (and that part works
fine). But where should the sample mask go at the end of the fragment
program? r0? r8? (I've tried all of those with minimal effect.)
Perhaps there's more configuration that I'm missing regarding the
sample mask? Also, how does this interact with the frag depth (which
also gets implicitly assigned based on color outputs)?

Any insight into this would be hugely helpful. In case you feel like
taking a look at the actual code, these are my commits:
https://github.com/imirkin/mesa/commits/sample_shading . Note that
some bits of the sample mask were already there for nvc0 (like setting
the shader header bit), thus don't appear in my change.

Thanks,

  -ilia


More information about the Nouveau mailing list