[Bug 29350] New: No stencil buffer support for frogatto with Radeon HD 3200 KMS

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sun Aug 1 22:05:53 PDT 2010


https://bugs.freedesktop.org/show_bug.cgi?id=29350

           Summary: No stencil buffer support for frogatto with Radeon HD
                    3200 KMS
           Product: Mesa
           Version: git
          Platform: x86-64 (AMD64)
        OS/Version: Linux (All)
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Drivers/DRI/R600
        AssignedTo: dri-devel at lists.freedesktop.org
        ReportedBy: shadowm at wesnoth.org


The game Frogatto requires stencil buffer support in order to display an iris
transition which is used when starting/switching levels during gameplay. When
it doesn't detect iris support, it falls back to an alpha fading effect
instead.

While it does detect a large enough stencil buffer when using the old radeon
DDX in User modesetting mode, in KMS mode it doesn't, so it replaces the iris
effect with the aforementioned fadeout.

The game's source code for version 1.0 can be obtained here:
http://www.frogatto.com/download

The SVN trunk has the following URI:
svn://frogatto.com/home/ben/svn/frogatto/trunk

I have noticed this issue so far with KMS on Linux 2.6.33, 2.6.34 and now,
2.6.35 and it has been the same with various Mesa and Radeon DDX revisions from
the git repositories. In all cases (except 2.6.35, which I haven't tested with
UMS), the stencil buffer support is available when not in KMS operation mode.
It's also possible to reproduce it so far with version 1.0, and SVN revisions
both before and after the 1.0 tag of the game.

The game requires SDL, SDL_ttf, SDL_mixer,
Boost.regex/system/iostreams/threads, GL, GLU and GLEW to be compiled from
source. The C++ code used to detect the usability of a stencil buffer (and
therefore decide whether to use the iris effect or a fadeout) is roughly the
following, found in src/level_runner.cpp through two small methods,
is_stencil_buffer_available() and calculate_stencil_buffer_available():

> GLint stencil_buffer_bits = 0;
> glGetIntegerv(GL_STENCIL_BITS, &stencil_buffer_bits);
> return stencil_buffer_bits > 0; // if true, the stencil buffer is usable

The system configuration used for my last test:

- Debian Testing (Squeeze) amd64 with packages from the 2010-08-01 archive.
- libc (eglibc) 2.11.2.
- Mesa git master @ aef4500ca4ae9e5bc57560c6f9a32d9ad892975b (latest as of this
writing), Gallium support disabled, only r600 and swrast DRI drivers compiled,
GLX TLS and XCB support enabled.
- Radeon DDX from freedesktop.org @ dacaf5d827b58c39f9e5a7ac0530f9ea6e257347
(latest as of this writing) with KMS support compiled.
- libdrm @ b803918f3f77c62edf22e78cb2095be399753423 (July 1st)
- Linux 2.6.35 with drm/radeon compiled as built-in, KMS enabled by default.
- X.org server version 1.7.7.

The graphics controller is a Radeon HD 3200 (RS780M/RS780MN based, uses the ATI
R600 DRI driver).

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the dri-devel mailing list