On 19/01/2015 23:23, Ilia Mirkin wrote :
On Mon, Jan 19, 2015 at 5:17 PM, Axel Davy <axel.d...@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.d...@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
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to