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

Ilia Mirkin imirkin at alum.mit.edu
Mon Jan 19 14:23:36 PST 2015


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.

> 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


More information about the mesa-dev mailing list