Bug 40776

Summary: [r300g] games crash with pp_jimenezmlaa=8
Product: Mesa Reporter: Pavel Ondračka <pavel.ondracka>
Component: Drivers/Gallium/r300Assignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: cand, pedretti.fabio
Version: git   
Hardware: Other   
OS: All   
URL: http://www.heroesofnewerth.com/download.php
Whiteboard:
i915 platform: i915 features:

Description Pavel Ondračka 2011-09-11 02:23:29 UTC
I noticed ROUND support in today's mesa git so I decided to give mlaa a try however when starting HoN with pp_jimenezmlaa set it crash with: 

r300_state_derived.c:795:r300_merge_textures_and_samplers: Assertion `(tex->tex_offset & 0x1f) == 0' failed.

Program received signal SIGTRAP, Trace/breakpoint trap.
0xa1850c39 in _debug_assert_fail (expr=0xa1fcd081 "(tex->tex_offset & 0x1f) == 0", file=0xa1fccb14 "r300_state_derived.c", line=795, 
    function=0xa1fcd0a0 "r300_merge_textures_and_samplers") at util/u_debug.c:282
282	      os_abort();
(gdb) bt full
#0  0xa1850c39 in _debug_assert_fail (expr=0xa1fcd081 "(tex->tex_offset & 0x1f) == 0", file=0xa1fccb14 "r300_state_derived.c", line=795, 
    function=0xa1fcd0a0 "r300_merge_textures_and_samplers") at util/u_debug.c:282
No locals.
#1  0xa15bd6fa in r300_merge_textures_and_samplers (r300=0x936fc98) at r300_state_derived.c:795
        state = 0x9375480
        texstate = 0x9375510
        sampler = 0xa0ef470
        view = 0x15de3658
        tex = 0x9377e98
        base_level = 0
        min_level = 0
        level_count = 0
        i = 0
        j = 2721371740
        size = 2
        count = 1
        has_us_format = 0 '\000'
        __FUNCTION__ = "r300_merge_textures_and_samplers"
#2  0xa15bdd6c in r300_update_derived_state (r300=0x936fc98) at r300_state_derived.c:1006
No locals.
#3  0xa15b1fcc in r300_draw_vbo (pipe=0x936fc98, dinfo=0xbfffed44) at r300_render.c:779
        r300 = 0x936fc98
        info = {indexed = 0 '\000', mode = 7, start = 0, count = 4, start_instance = 0, instance_count = 1, index_bias = 0, 
          min_index = 0, max_index = 3, primitive_restart = 0 '\000', restart_index = 0}
#4  0xa185870c in util_draw_arrays (pipe=0x936fc98, mode=7, start=0, count=4) at ./util/u_draw.h:63
        info = {indexed = 0 '\000', mode = 7, start = 0, count = 4, start_instance = 0, instance_count = 1, index_bias = 0, 
          min_index = 0, max_index = 3, primitive_restart = 0 '\000', restart_index = 0}
#5  0xa18587df in util_draw_vertex_buffer (pipe=0x936fc98, cso=0x9376cc8, vbuf=0x91fe1f0, offset=0, prim_type=7, num_verts=4, 
    num_attribs=2) at util/u_draw_quad.c:69
        vbuffer = {stride = 32, buffer_offset = 0, buffer = 0x91fe1f0}
        __FUNCTION__ = "util_draw_vertex_buffer"
#6  0xa182fb12 in pp_filter_draw (p=0x936fb40) at postprocess/pp_run.c:170
No locals.
#7  0xa182ead5 in pp_jimenezmlaa_run (ppq=0x936fab8, in=0x937a4a8, out=0x15af7c18, n=0, iscolor=false) at postprocess/pp_mlaa.c:133
        p = 0x936fb40
        mstencil = {depth = {enabled = 0, writemask = 0, func = 0}, stencil = {{enabled = 1, func = 7, fail_op = 0, zpass_op = 2, 
              zfail_op = 0, valuemask = 255, writemask = 255}, {enabled = 0, func = 0, fail_op = 0, zpass_op = 0, zfail_op = 0, 
              valuemask = 0, writemask = 0}}, alpha = {enabled = 0, func = 0, ref_value = 0}}
        v_tmp = {reference = {count = 152853208}, format = 154598552, texture = 0x158c162, context = 0x3f800000, u = {tex = {
              first_layer = 0, last_layer = 16256, first_level = 0, last_level = 0}, buf = {first_element = 1065353216, 
              last_element = 0}}, swizzle_r = 0, swizzle_g = 0, swizzle_b = 0, swizzle_a = 0}
        arr = {0x33046c, 0x320, 0x500}
        w = 1280
        h = 800
        ref = {ref_value = "\001"}
#8  0xa182f2f7 in pp_jimenezmlaa (ppq=0x936fab8, in=0x937a4a8, out=0x15af7c18, n=0) at postprocess/pp_mlaa.c:295
No locals.
#9  0xa182f702 in pp_run (ppq=0x936fab8, in=0x937a4a8, out=0x15af7c18, indepth=0x15af7e90) at postprocess/pp_run.c:69
        i = 2709895702
#10 0xa1586469 in dri2_flush_drawable (dPriv=0x93792c0) at dri2.c:56
        ctx = 0x92690a8
        drawable = 0x93775c0
        ptex = 0x15af7c18
#11 0x0673e781 in dri2SwapBuffers (pdraw=0x9379218, target_msc=0, divisor=0, remainder=0) at dri2_glx.c:556
        gc = 0x9268fc0
        priv = 0x9379218
        dpyPriv = 0x8cd9df8
        psc = 0x8cda5e8
        pdp = 0x8c0c9c0
        ret = 0
#12 0x06707ec1 in glXSwapBuffers (dpy=0x8c0dd38, drawable=65011719) at glxcmds.c:805
        pdraw = 0x9379218
        gc = 0x9268fc0
        tag = 1065353216
        opcode = 7 '\a'
        req = 0x6622a4c
#13 0x0663daf4 in ?? () from /home/Paulie/HoN/vid_gl2-x86.so
No symbol table info available.
#14 0x0663db28 in ?? () from /home/Paulie/HoN/vid_gl2-x86.so
No symbol table info available.
#15 0x0077df6d in CVid::EndFrame() () from /home/Paulie/HoN/libk2-x86.so
No symbol table info available.
#16 0x002aeb17 in ?? () from /home/Paulie/HoN/libk2-x86.so
No symbol table info available.
#17 0x002aee6d in CHost::Execute() () from /home/Paulie/HoN/libk2-x86.so
No symbol table info available.
#18 0x08050997 in ?? ()
No symbol table info available.
#19 0x4b39c413 in __libc_start_main (main=0x805037a, argc=1, ubp_av=0xbffff364, init=0x8051c62, fini=0x8051c18, 
    rtld_fini=0x4b370dd0 <_dl_fini>, stack_end=0xbffff35c) at libc-start.c:226
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1263579124, 0, 0, 0, -1490330656, 726228489}, mask_was_saved = 0}}, priv = {pad = {
              0x0, 0x0, 0x1, 0x804af84}, data = {prev = 0x0, cleanup = 0x0, canceltype = 1}}}
        not_first_call = <optimized out>
#20 0x0804afa5 in ?? ()
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

llvmpipe works fine. 
Setting vblank_mode to 0 fixes this issue.

Mesa: f0bfc0daa87578ce8b11383afb99dbf2d2630e23
Kernel: 3.0.4
GPU: RV530
Comment 1 Fabio Pedretti 2011-09-11 03:20:57 UTC
Same problem here. Depending on the app the assertion changes, e.g. with torcs:
../../../../src/gallium/auxiliary/util/u_inlines.h:81:pipe_reference_described: Assertion `pipe_is_referenced(reference)' failed.

with glxgears:
util/u_sampler.c:69:default_template: Assertion `desc' failed.

Surprisingly, pp_jimenezmlaa_color=8 and pp_celshade=1 works fine. See also my report here: http://phoronix.com/forums/showthread.php?59152-Gallium3D-Post-Processing-MLAA-Nearly-Ready&p=225721#post225721
Comment 2 Pavel Ondračka 2011-09-11 03:37:41 UTC
Disabling pageflipping also seems to help here.
And BTW I don't have any problems with glxgears.
Comment 3 almos 2011-10-15 11:32:07 UTC
I tried postprocessing now, and here are my results on rv350 with current r300g; the test application is neverball.
pp_nored=1 pp_nogreen=1 pp_noblue=1 are OK
pp_celshade=1 I don't know what this should look like, but the colors are weird
pp_jimenezmlaa=2 pp_jimenezmlaa=4 pp_jimenezmlaa=8
r300: Ooops. Got unsupported format none in r300_create_sampler_view.
r300_state.c:1490:r300_create_sampler_view: Assertion `hwformat != ~0' failed.
Trace/breakpoint trap
pp_jimenezmlaa_color=2 pp_jimenezmlaa_color=4
Segmentation fault (renders only blackness, memory leaks very fast)
Comment 4 Alex Deucher 2012-01-24 05:58:55 UTC
Is this still an issue with the latest mesa git?
Comment 5 Fabio Pedretti 2012-01-24 06:18:21 UTC
(In reply to comment #4)
> Is this still an issue with the latest mesa git?

Yes
Comment 6 Michel Dänzer 2012-01-24 09:07:22 UTC
Fixed in commit 7219af5ec184d4f92682e75f3d992ae048005d6a ('gallium/postprocess: Proper reference counting of pp_jimenezmlaa depth buffer.')

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.