[Bug 101996] Having problems when drawing lots of mesh with texture array
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Tue Aug 1 04:23:47 UTC 2017
https://bugs.freedesktop.org/show_bug.cgi?id=101996
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 at lists.freedesktop.org
Reporter: benau2006 at yahoo.com.hk
QA Contact: dri-devel at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170801/f7ba16a2/attachment-0001.html>
More information about the dri-devel
mailing list