[Mesa-dev] [PATCH] gallium/docs: document automatic per-sample FS execution

Roland Scheidegger sroland at vmware.com
Thu Jul 27 20:29:16 UTC 2017


Ok, I suppose that makes sense.
I just wouldn't be surprised if some driver instead just relies on the
set_min_samples() value all the time and ignoring it should really run
at per sample frequency in any case.

Reviewed-by: Roland Scheidegger <sroland at vmware.com>


Am 27.07.2017 um 21:31 schrieb Brian Paul:
> The DX10.1 docs specify this, and there's language in both the
> GL_ARB_sample_shading and GLSL 4.00 specs that this behavior is
> expected.  I think it makes sense to say the same for gallium.
> 
> Mesa's _mesa_get_min_invocations_per_fragment() returns N samples when
> the FS uses the sample ID or position, where N = number of samples in
> the render target.  That is, glMinSampleShading has no effect() and we
> call set_min_samplers(N).
> 
> That's consistent with NVIDIA's driver- the value set with
> glMinSampleShading() has no effect on the sample pos or sample ID piglit
> tests.
> 
> -Brian
> 
> On 07/27/2017 12:49 PM, Roland Scheidegger wrote:
>> Are you sure on this?
>> If you can do per-sample shading (there's a cap bit for it), then you're
>> supposed to implement set_min_samples(). The state tracker will set this
>> accordingly if these inputs are used then.
>>
>> Though maybe it would make sense regardless...
>>
>> Roland
>>
>>
>> Am 27.07.2017 um 19:54 schrieb Brian Paul:
>>> Both the GLSL 4.00 specs and DX10.1 specs specify that if a fragment
>>> shader uses the sample ID or sample position inputs, the shader is
>>> automatically run at per sample frequency.  Document that expectation
>>> for gallium fragment shaders.
>>> ---
>>>   src/gallium/docs/source/tgsi.rst | 6 ++++++
>>>   1 file changed, 6 insertions(+)
>>>
>>> diff --git a/src/gallium/docs/source/tgsi.rst
>>> b/src/gallium/docs/source/tgsi.rst
>>> index 0dd2ac0..d7817cc 100644
>>> --- a/src/gallium/docs/source/tgsi.rst
>>> +++ b/src/gallium/docs/source/tgsi.rst
>>> @@ -3331,6 +3331,9 @@ contains the current sample id (i.e.
>>> gl_SampleID) as an unsigned int.
>>>   Only the X component is used.  If per-sample shading is not enabled,
>>>   the result is (0, undef, undef, undef).
>>>
>>> +Note that if the fragment shader uses this system value, the fragment
>>> +shader is automatically executed at per sample frequency.
>>> +
>>>   TGSI_SEMANTIC_SAMPLEPOS
>>>   """""""""""""""""""""""
>>>
>>> @@ -3340,6 +3343,9 @@ in the render target (i.e.  gl_SamplePosition)
>>> when per-fragment shading
>>>   is in effect.  Position values are in the range [0, 1] where 0.5 is
>>>   the center of the fragment.
>>>
>>> +Note that if the fragment shader uses this system value, the fragment
>>> +shader is automatically executed at per sample frequency.
>>> +
>>>   TGSI_SEMANTIC_SAMPLEMASK
>>>   """"""""""""""""""""""""
>>>
>>>
>>
> 



More information about the mesa-dev mailing list