[Mesa-dev] [PATCH v2] gallium: Add MULTISAMPLE_Z_RESOLVE cap

Axel Davy axel.davy at ens.fr
Mon Jan 19 14:46:59 PST 2015


On 19/01/2015 23:23, Ilia Mirkin wrote :
> On Mon, Jan 19, 2015 at 5:17 PM, Axel Davy <axel.davy at ens.fr> wrote:
>> Resolving a multisampled depth texture into
>> a single sampled texture is supported on >= SM4.1
>> hw. It is possible some previous hw support it.
>>
>> The ability was tested on radeonsi and nvc0.
> I'm not aware of any issues in this regard on nv50 either... take a look at
>
> http://people.freedesktop.org/~imirkin/nv50-comparison/problems.html
>
> perhaps there are piglits that indicate problems. It does seem like
> the original G80 (chip id == 0x50) did have some extra-special
> problems in EXT_framebuffer_multisample related to depth, perhaps it's
> the same as with the original r6xx chips.
Since I don't know for sure what nv50 chips are fine with it, I choosed 
to play
safe by not advertising support. But if you know what cards support it, then
we can add a rule: On which nv50 chips is it supported ? What is the 
test to do ?
>
>> Apparently is is also supported for radeon >= r700.
>>
>> This patch adds the MULTISAMPLE_Z_RESOLVE cap and
>> adds it to the drivers. It is advertised for drivers
>> for which it is sure the ability is supported.
>>
>> Signed-off-by: Axel Davy <axel.davy at ens.fr>
>> ---
>> v2: Add mention of the first sample to the definition.
>> Remove comment about possible support for drivers that
>> don't support MSAA yet.
>>   src/gallium/docs/source/screen.rst               | 3 +++
>>   src/gallium/drivers/freedreno/freedreno_screen.c | 1 +
>>   src/gallium/drivers/i915/i915_screen.c           | 1 +
>>   src/gallium/drivers/ilo/ilo_screen.c             | 1 +
>>   src/gallium/drivers/llvmpipe/lp_screen.c         | 2 ++
>>   src/gallium/drivers/nouveau/nv30/nv30_screen.c   | 1 +
>>   src/gallium/drivers/nouveau/nv50/nv50_screen.c   | 1 +
>>   src/gallium/drivers/nouveau/nvc0/nvc0_screen.c   | 1 +
>>   src/gallium/drivers/r300/r300_screen.c           | 1 +
>>   src/gallium/drivers/r600/r600_pipe.c             | 2 ++
>>   src/gallium/drivers/radeonsi/si_pipe.c           | 1 +
>>   src/gallium/drivers/softpipe/sp_screen.c         | 2 ++
>>   src/gallium/drivers/svga/svga_screen.c           | 1 +
>>   src/gallium/drivers/vc4/vc4_screen.c             | 1 +
>>   src/gallium/include/pipe/p_defines.h             | 1 +
>>   15 files changed, 20 insertions(+)
>>
>> index 6c5703a..351f3c2 100644
>> --- a/src/gallium/include/pipe/p_defines.h
>> +++ b/src/gallium/include/pipe/p_defines.h
>> @@ -573,6 +573,7 @@ enum pipe_cap {
>>      PIPE_CAP_SAMPLER_VIEW_TARGET = 110,
>>      PIPE_CAP_CLIP_HALFZ = 111,
>>      PIPE_CAP_VERTEXID_NOBASE,
>> +   PIPE_CAP_MULTISAMPLE_Z_RESOLVE,
> = 113 (and fix up NOBASE too maybe?)
>
>    -ilia
>
Should fix NOBASE be a separated patch ?

Axel Davy


More information about the mesa-dev mailing list