[Mesa-dev] [Bug 91314] The Witcher 2 (native) fails to start, throws "Assertion `img->_BaseFormat != -1' failed."
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Sun Jul 12 09:59:48 PDT 2015
https://bugs.freedesktop.org/show_bug.cgi?id=91314
Ilia Mirkin <imirkin at alum.mit.edu> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |imirkin at alum.mit.edu,
| |itoral at igalia.com
--- Comment #2 from Ilia Mirkin <imirkin at alum.mit.edu> ---
So from the backtrace on IRC we see:
#5 0xb6ab9a64 in init_teximage_fields_ms (ctx=<optimized out>, img=0x204c7420,
width=<optimized out>, height=0, depth=0, border=0,
internalFormat=0, format=MESA_FORMAT_NONE, numSamples=0,
fixedSampleLocations=1 '\001') at main/teximage.c:1320
#6 0xb6ab9d4a in _mesa_init_teximage_fields (ctx=0x2055bed0, img=0x204c7420,
width=0, height=0, depth=0, border=0, internalFormat=0,
format=MESA_FORMAT_NONE) at main/teximage.c:1420
#7 0xb6abee31 in _mesa_texture_image_multisample (ctx=0x2055bed0, dims=2,
texObj=0x204a55d8, target=37120, samples=5, internalformat=34836,
width=32, height=32, depth=1, fixedsamplelocations=0 '\000', immutable=0
'\000', func=0xb6ec6f81 "glTexImage2DMultisample")
at main/teximage.c:5703
#8 0xb6abeecc in _mesa_TexImage2DMultisample (target=37120, samples=5,
internalformat=34836, width=32, height=32,
fixedsamplelocations=0 '\000') at main/teximage.c:5731
So the culprit is:
if (width > 0 && height > 0 && depth > 0) {
if (!ctx->Driver.AllocTextureStorage(ctx, texObj, 1,
width, height, depth)) {
/* tidy up the texture image state. strictly speaking,
* we're allowed to just leave this in whatever state we
* like, but being tidy is good.
*/
_mesa_init_teximage_fields(ctx, texImage,
0, 0, 0, 0, GL_NONE, MESA_FORMAT_NONE);
}
}
The texture storage allocation fails because nv50 doesn't support GL_RGBA32F
with > 4 samples.
Of course the sample count check above (samplesOK) passes because in st/mesa
format choosing, GL_RGBA32F will happily fall back to RGBA16F, which is
perfectly allowed to have 8 samples on nv50.
However st_AllocTextureStorage is blissfully unaware of such a restriction, and
fails when it can't create a RGBA32F MS8 texture.
So the bug is 2-fold:
(a) st_AllocateTextureStorage should use st_choose_format (or equivalent) so
that it deals with any sample count limitations
(b) _mesa_init_teximage_fields with MESA_FORMAT_NONE appears to trigger the
assert no matter what -- this should be handled better. Iago, should we just
let MESA_FORMAT_NONE through the assert, as was done before? (By the way,
GLenum, which is the type of baseFormat, appears to be unsigned, so a check
against -1 is a bit dangerous.)
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150712/3032ee50/attachment.html>
More information about the mesa-dev
mailing list