[Mesa-dev] [PATCH] st/mesa: Add R8G8B8A8_SRGB case to st_pipe_format_to_mesa_format.
Brian Paul
brianp at vmware.com
Thu Mar 6 09:01:44 PST 2014
On 03/06/2014 09:59 AM, jfonseca at vmware.com wrote:
> From: José Fonseca <jfonseca at vmware.com>
>
> With the recent SRGB changes all my automated OpenGL llvmpipe tests
> (piglit, conform, glretrace) start asserting with the backtrace below.
>
> I'm hoping this change will fix it. I'm not entirely sure, as this
> doesn't happen in my development machine (the bug probably depends on
> the exact X visual).
>
> Anyway, it seems the sensible thing to do here.
>
> Program terminated with signal 5, Trace/breakpoint trap.
> #0 _debug_assert_fail (expr=expr at entry=0x7fa324df2ed7 "0", file=file at entry=0x7fa324e3fc30 "src/mesa/state_tracker/st_format.c", line=line at entry=758, function=function at entry=0x7fa324e40160 <__func__.34798> "st_pipe_format_to_mesa_format") at src/gallium/auxiliary/util/u_debug.c:281
> #0 _debug_assert_fail (expr=expr at entry=0x7fa324df2ed7 "0", file=file at entry=0x7fa324e3fc30 "src/mesa/state_tracker/st_format.c", line=line at entry=758, function=function at entry=0x7fa324e40160 <__func__.34798> "st_pipe_format_to_mesa_format") at src/gallium/auxiliary/util/u_debug.c:281
> No locals.
> #1 0x00007fa3241d22b3 in st_pipe_format_to_mesa_format (format=format at entry=PIPE_FORMAT_R8G8B8A8_SRGB) at src/mesa/state_tracker/st_format.c:758
> __func__ = "st_pipe_format_to_mesa_format"
> #2 0x00007fa3241c8ec5 in st_new_renderbuffer_fb (format=format at entry=PIPE_FORMAT_R8G8B8A8_SRGB, samples=0, sw=<optimised out>) at src/mesa/state_tracker/st_cb_fbo.c:295
> strb = 0x19e8420
> #3 0x00007fa32409d355 in st_framebuffer_add_renderbuffer (stfb=stfb at entry=0x19e7fa0, idx=<optimised out>) at src/mesa/state_tracker/st_manager.c:314
> rb = <optimised out>
> format = PIPE_FORMAT_R8G8B8A8_SRGB
> sw = <optimised out>
> #4 0x00007fa32409e635 in st_framebuffer_create (st=0x19e7fa0, st=0x19e7fa0, stfbi=0x19e7a30) at src/mesa/state_tracker/st_manager.c:458
> stfb = 0x19e7fa0
> mode = {rgbMode = 1 '\001', floatMode = 0 '\000', colorIndexMode = 0 '\000', doubleBufferMode = 0, stereoMode = 0, haveAccumBuffer = 0 '\000', haveDepthBuffer = 1 '\001', haveStencilBuffer = 1 '\001', redBits = 8, greenBits = 8, blueBits = 8, alphaBits = 8, redMask = 0, greenMask = 0, blueMask = 0, alphaMask = 0, rgbBits = 32, indexBits = 0, accumRedBits = 0, accumGreenBits = 0, accumBlueBits = 0, accumAlphaBits = 0, depthBits = 24, stencilBits = 8, numAuxBuffers = 0, level = 0, visualRating = 0, transparentPixel = 0, transparentRed = 0, transparentGreen = 0, transparentBlue = 0, transparentAlpha = 0, transparentIndex = 0, sampleBuffers = 0, samples = 0, maxPbufferWidth = 0, maxPbufferHeight = 0, maxPbufferPixels = 0, optimalPbufferWidth = 0, optimalPbufferHeight = 0, swapMethod = 0, bindToTextureRgb = 0, bindToTextureRgba = 0, bindToMipmapTexture = 0, bindToTextureTargets = 0, yInverted = 0, sRGBCapable = 1}
> idx = <optimised out>
> #5 st_framebuffer_reuse_or_create (st=st at entry=0x19dfce0, fb=<optimised out>, stfbi=stfbi at entry=0x19e7a30) at src/mesa/state_tracker/st_manager.c:728
> No locals.
> #6 0x00007fa32409e8cc in st_api_make_current (stapi=<optimised out>, stctxi=0x19dfce0, stdrawi=0x19e7a30, streadi=0x19e7a30) at src/mesa/state_tracker/st_manager.c:747
> st = 0x19dfce0
> stdraw = 0x640064
> stread = 0x1300000006
> ret = <optimised out>
> #7 0x00007fa324074a20 in XMesaMakeCurrent2 (c=c at entry=0x195bb00, drawBuffer=0x19e7e90, readBuffer=0x19e7e90) at src/gallium/state_trackers/glx/xlib/xm_api.c:1194
> No locals.
> #8 0x00007fa3240783c8 in glXMakeContextCurrent (dpy=0x194e900, draw=8388610, read=8388610, ctx=0x195bac0) at src/gallium/state_trackers/glx/xlib/glx_api.c:1177
> drawBuffer = <optimised out>
> readBuffer = <optimised out>
> xmctx = 0x195bb00
> glxCtx = 0x195bac0
> firsttime = 0 '\000'
> no_rast = 0 '\000'
> #9 0x00007fa32407852f in glXMakeCurrent (dpy=<optimised out>, drawable=<optimised out>, ctx=<optimised out>) at src/gallium/state_trackers/glx/xlib/glx_api.c:1211
> No locals.
> ---
> src/mesa/state_tracker/st_format.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
> index 25577ac..0311a2b 100644
> --- a/src/mesa/state_tracker/st_format.c
> +++ b/src/mesa/state_tracker/st_format.c
> @@ -753,6 +753,8 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
>
> case PIPE_FORMAT_B8G8R8X8_SRGB:
> return MESA_FORMAT_B8G8R8X8_SRGB;
> + case PIPE_FORMAT_R8G8B8A8_SRGB:
> + return MESA_FORMAT_B8G8R8A8_SRGB;
Hmm, we don't have a MESA_FORMAT_R8G8B8A8_SRGB to match that pipe format
so I'm not sure this is correct. But if this fixes the crash, it's
better than nothing. Acked-by: Brian Paul <brianp at vmware.com>
I could look into adding MESA_FORMAT_R8G8B8A8_SRGB...
-Brian
More information about the mesa-dev
mailing list