Bug ID | 101996 |
---|---|
Summary | Having problems when drawing lots of mesh with texture array |
Product | Mesa |
Version | 17.2 |
Hardware | Other |
OS | Linux (All) |
Status | NEW |
Severity | normal |
Priority | medium |
Component | Drivers/Gallium/radeonsi |
Assignee | dri-devel@lists.freedesktop.org |
Reporter | benau2006@yahoo.com.hk |
QA Contact | dri-devel@lists.freedesktop.org |
Hi, I'm developing a new engine for game STK, and is having serious regression when switching to use texture array for drawing meshes in game: Code: https://github.com/Benau/stk-code/tree/sp_new (Basically only data/shader/sp*.* and src/sp/* is relevant Assets: https://github.com/Benau/sp-assets (In case if real-time testing is needed) Apitrace: http://kobato.stan.hk/bug.trace.lzma Linux is 4.12.4 DRM is using git Mesa version is 17.2.0-rc1 (git-a455f594bb) So when you enter the game with lots of meshes rendering, the game is spending a lot of time waiting in glFlush, (~100ms at worst) in util_queue_fence_wait in gdb with ctrl-c, Full trace: #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 #1 0x00007f85d8c30d22 in cnd_wait (cond=0x1ca8d50, mtx=0x1ca8d28) at ../../include/c11/threads_posix.h:159 #2 0x00007f85d8c31221 in util_queue_fence_wait (fence=0x1ca8d28) at u_queue.c:106 #3 0x00007f85d90bc6c3 in radeon_drm_cs_sync_flush (rcs=0x1c80b70) at radeon_drm_cs.c:489 #4 0x00007f85d90bcb20 in radeon_drm_cs_flush (rcs=0x1c80b70, flags=1, pfence=0x1ad97e8) at radeon_drm_cs.c:614 #5 0x00007f85d9078f00 in si_context_gfx_flush (context=0x1ad9430, flags=1, fence=0x0) at si_hw_context.c:154 #6 0x00007f85d90fff53 in r600_flush_from_st (ctx=0x1ad9430, fence=0x0, flags=0) at r600_pipe_common.c:396 #7 0x00007f85d8d8fb30 in tc_flush (_pipe=0x1ca8da0, fence=0x0, flags=0) at util/u_threaded_context.c:1799 #8 0x00007f85d8ada3ec in st_flush (st=0x1ce2300, fence=0x0, flags=0) at state_tracker/st_cb_flush.c:87 #9 0x00007f85d8ada4b3 in st_glFlush (ctx=0x1cb0ec0) at state_tracker/st_cb_flush.c:121 #10 0x00007f85d884cff5 in _mesa_flush (ctx=0x1cb0ec0) at main/context.c:1846 #11 0x00007seriousf85d884d17d in _mesa_Flush () at main/context.c:1884 #12 0x0000000000f649ce in irr::video::COpenGLDriver::endScene (this=0x1cfe410) at /data/game/stk-code/lib/irrlicht/source/Irrlicht/COpenGLDriver.cpp:908 (As you can see in apitrace) When something bad-luck enough, it can even hang / lock the whole linux, this is the before journalctl: 8月 01 10:55:52 kobato kernel: [TTM] Failed allocating page table 8月 01 10:55:52 kobato kernel: [TTM] Buffer eviction failed 8月 01 10:55:52 kobato kernel: [TTM] Failed allocating page table 8月 01 10:55:52 kobato kernel: [TTM] Buffer eviction failed 8月 01 10:55:52 kobato kernel: BUG: unable to handle kernel NULL pointer dereference at 00000000000000b8 8月 01 10:55:52 kobato kernel: IP: drm_mm_remove_node+0x280/0x2c0 8月 01 10:55:52 kobato kernel: PGD 295f96067 8月 01 10:55:52 kobato kernel: P4D 295f96067 8月 01 10:55:52 kobato kernel: PUD 20e4a1067 8月 01 10:55:52 kobato kernel: PMD 0 8月 01 10:55:52 kobato kernel: 8月 01 10:55:52 kobato kernel: Oops: 0002 [#1] PREEMPT SMP 8月 01 10:55:52 kobato kernel: Modules linked in: ctr ccm ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack af_packet fuse月 01 10:55:52 kobato kernel: CPU: 5 PID: 4349 Comm: radeon_cs:0 Tainted: G O 4.12.4 #4 8月 01 10:55:52 kobato kernel: Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./Z87 Pro4, BIOS P2.30 07/11/2014 8月 01 10:55:52 kobato kernel: task: ffff88010c9f8c00 task.stack: ffffc9000ee1c000 8月 01 10:55:52 kobato kernel: RIP: 0010:drm_mm_remove_node+0x280/0x2c0 8月 01 10:55:52 kobato kernel: RSP: 0018:ffffc9000ee1f600 EFLAGS: 00010246 8月 01 10:55:52 kobato kernel: RAX: 0000000000000000 RBX: 00000000000007d8 RCX: 0000000200000002 8月 01 10:55:52 kobato kernel: RDX: 0000000000000000 RSI: ffffc9000ee1f668 RDI: 0000000000000000 8月 01 10:55:52 kobato kernel: RBP: ffff88011f267780 R08: 0000000000000000 R09: ffff88011f2677c0 8月 01 10:55:52 kobato kernel: R10: ffffea00047c99c0 R11: 0000000000000000 R12: 00000000000007f8 8月 01 10:55:52 kobato kernel: R13: 0000000000000000 R14: ffff88030ff70980 R15: ffff88020e7f9068 8月 01 10:55:52 kobato kernel: FS: 00007f7ee903d700(0000) GS:ffff88031ed40000(0000) knlGS:0000000000000000 8月 01 10:55:52 kobato kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 8月 01 10:55:52 kobato kernel: CR2: 00000000000000b8 CR3: 0000000297b41000 CR4: 00000000001406a0 8月 01 10:55:52 kobato kernel: Call Trace: 8月 01 10:55:52 kobato kernel: ? ttm_bo_man_put_node+0x26/0x50 8月 01 10:55:52 kobato kernel: ? ttm_bo_evict+0x156/0x2a0 8月 01 10:55:52 kobato kernel: ? ttm_mem_evict_first+0x137/0x190 8月 01 10:55:52 kobato kernel: ? ttm_bo_mem_space+0x327/0x4a0 8月 01 10:55:52 kobato kernel: ? ttm_bo_validate+0xa5/0x120 8月 01 10:55:52 kobato kernel: ? ttm_eu_reserve_buffers+0x28a/0x300 8月 01 10:55:52 kobato kernel: ? radeon_bo_list_validate+0xbf/0x200 8月 01 10:55:52 kobato kernel: ? radeon_cs_parser_relocs+0x2c0/0x3d0 8月 01 10:55:52 kobato kernel: ? radeon_cs_ioctl+0xc0/0x750 8月 01 10:55:52 kobato kernel: ? drm_ioctl+0x1c8/0x3e0 8月 01 10:55:52 kobato kernel: ? radeon_cs_parser_init+0x20/0x20 8月 01 10:55:52 kobato kernel: ? do_futex+0x26d/0xb20 8月 01 10:55:52 kobato kernel: ? shmem_truncate_range+0x19/0x30 8月 01 10:55:52 kobato kernel: ? radeon_drm_ioctl+0x44/0x80 8月 01 10:55:52 kobato kernel: ? do_vfs_ioctl+0x8a/0x5d0 8月 01 10:55:52 kobato kernel: ? __fget+0x62/0xa0 8月 01 10:55:52 kobato kernel: ? SyS_ioctl+0x36/0x70 8月 01 10:55:52 kobato kernel: ? entry_SYSCALL_64_fastpath+0x17/0x98 8月 01 10:55:52 kobato kernel: Code: 00 00 00 e9 b2 fe ff ff 48 8b 85 88 00 00 00 4c 8b 41 08 49 89 ca 48 89 41 48 48 89 c8 e9 65 fe ff ff 4c 89 51 10 e9 8f fe ff ff <49> 89 8d b8 00 00 0 8月 01 10:55:52 kobato kernel: RIP: drm_mm_remove_node+0x280/0x2c0 RSP: ffffc9000ee1f600 8月 01 10:55:52 kobato kernel: CR2: 00000000000000b8 The same code has been tested in windows in same hardware, and other PC with nvidia proprietary driver, and it's working fine. Did I do something wrong with opengl code, or do you think it's a problem in mesa somewhere? Thanks
You are receiving this mail because:
- You are the assignee for the bug.
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel