[Mesa-dev] Etnaviv on mesa master vs. Array._DrawVAO

Guido Günther agx at sigxcpu.org
Sat Sep 1 22:02:05 UTC 2018


Hi,
On Sat, Sep 01, 2018 at 09:07:46AM +0200, Mathias Fröhlich wrote:
> Hi,
> 
> On Friday, 31 August 2018 12:40:01 CEST Guido Günther wrote:
> > Hi,
> > I'm looking into forward porting laanwj's patches for GC7000 support to
> > current mesa master. Luckily most of it already got merged last November
> > with mostly only the texture descriptor support missing(
> > https://github.com/laanwj/mesa/commit/b71802207432543745dff471c68fbc40495b48
> > 58)
> > 
> > Putting this on current master leads to this assertion in mesa when running
> > kmscube like:
> > 
> >     kmscube: ../src/gallium/drivers/etnaviv/etnaviv_state.c:536:
> > etna_vertex_elements_state_create: Assertion `element_size != 0 &&
> > end_offset <= 256' failed.
> > 
> > Printing the value there gives:
> > 
> >     etna_vertex_elements_state_create:535: size: 12, offset: 0, end_offset:
> > 12 etna_vertex_elements_state_create:535: size: 12, offset: 576,
> > end_offset: 588
> > 
> > And the bt is:
> > 
> >        Stack trace of thread 2158:
> >        #0  0x0000ffffa93427c0 raise (libc.so.6)
> >        #1  0x0000ffffa934274c raise (libc.so.6)
> >        #2  0x0000ffffa9343bac abort (libc.so.6)
> >        #3  0x0000ffffa933bd2c n/a (libc.so.6)
> >        #4  0x0000ffffa933bdac __assert_fail (libc.so.6)
> >        #5  0x0000ffffa8de468c etna_vertex_elements_state_create
> > (imx-drm_dri.so) #6  0x0000ffffa8757178 u_vbuf_set_vertex_elements_internal
> > (imx-drm_dri.so) #7  0x0000ffffa875726c u_vbuf_set_vertex_elements
> > (imx-drm_dri.so) #8  0x0000ffffa8711bcc cso_set_vertex_elements
> > (imx-drm_dri.so) #9  0x0000ffffa8b28760 set_vertex_attribs (imx-drm_dri.so)
> >        #10 0x0000ffffa8b28c9c st_update_array (imx-drm_dri.so)
> >        #11 0x0000ffffa8ad4e44 st_validate_state (imx-drm_dri.so)
> >        #12 0x0000ffffa8a1e410 prepare_draw (imx-drm_dri.so)
> >        #13 0x0000ffffa8a1e488 st_draw_vbo (imx-drm_dri.so)
> >        #14 0x0000ffffa8a0ea9c vbo_draw_arrays (imx-drm_dri.so)
> >        #15 0x0000ffffa8a0f408 vbo_exec_DrawArrays (imx-drm_dri.so)
> >        #16 0x0000ffffa953f7e0 glDrawArrays (libGLESv2.so.2)
> >        #17 0x0000aaaad7e62ea0 draw_cube_smooth (kmscube)
> >        #18 0x0000aaaad7e64160 atomic_run (kmscube)
> >        #19 0x0000ffffa93306e0 __libc_start_main (libc.so.6)
> >        #20 0x0000aaaad7e621fc $x (kmscube)
> >        #21 0x0000aaaad7e621fc $x (kmscube)
> > 
> > I've traced this back to this commit:
> > 
> >     19a91841c347107d877bc750371c5fa4e9b4de19 is the first bad commit
> >     commit 19a91841c347107d877bc750371c5fa4e9b4de19
> >     Author: Mathias Fröhlich <mathias.froehlich at web.de>
> >     Date:   Sun Apr 1 20:18:36 2018 +0200
> > 
> >         st/mesa: Use Array._DrawVAO in st_atom_array.c.
> > 
> >         Finally make use of the binding information in the VAO when
> >         setting up arrays for draw.
> > 
> >         v2: Emit less relocations also for interleaved userspace arrays.
> > 
> >         Reviewed-by: Brian Paul <brianp at vmware.com>
> >         Signed-off-by: Mathias Fröhlich <Mathias.Froehlich at web.de>
> > 
> > And indeed commits prior to that one work as expected. Any hints what
> > would be the right fix to not trigger the assert?
> 
> 
> Introduce a gallium cap and feed ctx->Const.MaxVertexAttribRelativeOffset with 
> the value that limits the actual hardware.
> 
> I have something prepared for that but did not get any response for a some 
> preparation patch so put that issue somehow down on my list.
> The point for today is, is that my development system is down, means I can 
> prepare this once this machine is back up hopefully by the beginning of this 
> week.
> Else feel free to just introduce that cap.

I will be away from the hw for the next week but I'm happy to cook up a
patch and test it afterwards.
Cheers,
 -- Guido


More information about the mesa-dev mailing list