https://bugs.freedesktop.org/show_bug.cgi?id=100024
Bug ID: 100024 Summary: [radeonsi] Failed to find memory space for buffer eviction when calling glTexSubImage2D with 16384 / 2 Product: DRI Version: XOrg git Hardware: All OS: Linux (All) Status: NEW Severity: normal Priority: medium Component: DRM/Radeon Assignee: dri-devel@lists.freedesktop.org Reporter: julien.isorce@gmail.com
Created attachment 130005 --> https://bugs.freedesktop.org/attachment.cgi?id=130005&action=edit new piglit test max-texture-size2 to reproduce the problem
/ [AMD/ATI] Cape Verde PRO [FirePro W600] /
The piglit test max-texture-size2 prints:
GL_TEXTURE_RECTANGLE, Internal Format = GL_RGBA8, Largest Texture Size = 16384 radeon: Not enough memory for command submission. [drm:radeon_cs_ioctl [radeon]] *ERROR* Failed to parse relocation -12! (ENOMEM) PIGLIT: {"subtest": {"GL_TEXTURE_RECTANGLE-GL_RGBA8" : "pass"}}
It says it passes but internally it fails. It looks like a bug from the TTM GPU memory manager subsystem in the linux kernel.
To reproduce just run: RADEON_THREAD=false DISPLAY=:0 PIGLIT_SOURCE_DIR=/home/julien/dev/piglit/ PIGLIT_PLATFORM=mixed_glx_egl ./bin/max-texture-size -fbo -auto
I set RADEON_THREAD=false to make it easier since the problem also appears with true.
I attached a new and more minimal piglit test "max-texture-size2" that reproduces the problem. A workaround of the problem is to use GL fence as the new test also demonstrates setting the env var USE_FENCE.
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #1 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130006 --> https://bugs.freedesktop.org/attachment.cgi?id=130006&action=edit lspic -s -v
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #2 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130008 --> https://bugs.freedesktop.org/attachment.cgi?id=130008&action=edit dmesg
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #3 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130009 --> https://bugs.freedesktop.org/attachment.cgi?id=130009&action=edit Xorg.log
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #4 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130011 --> https://bugs.freedesktop.org/attachment.cgi?id=130011&action=edit max-texture-size2 backtrace untill ENOMEM
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #5 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130012 --> https://bugs.freedesktop.org/attachment.cgi?id=130012&action=edit default output of max-texture-size2 test
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #6 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130013 --> https://bugs.freedesktop.org/attachment.cgi?id=130013&action=edit output of max-texture-size2 test with MESA_VERBOSE
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #7 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130014 --> https://bugs.freedesktop.org/attachment.cgi?id=130014&action=edit output of max-texture-size2 test with MESA_VERBOSE and R600_DEBUG
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #8 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130015 --> https://bugs.freedesktop.org/attachment.cgi?id=130015&action=edit output of max-texture-size2 test with USE_FENCE workaround
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #9 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130016 --> https://bugs.freedesktop.org/attachment.cgi?id=130016&action=edit patch for mesa to translate the radeonsi printf ENOMEM to a proper GL_OUT_OF_MEMORY
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #10 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130018 --> https://bugs.freedesktop.org/attachment.cgi?id=130018&action=edit output of max-texture-size2 test with attached patch for mesa
https://bugs.freedesktop.org/show_bug.cgi?id=100024
Michel Dänzer michel@daenzer.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #130018|text/x-log |text/plain mime type| |
https://bugs.freedesktop.org/show_bug.cgi?id=100024
Michel Dänzer michel@daenzer.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #130008|text/x-log |text/plain mime type| |
https://bugs.freedesktop.org/show_bug.cgi?id=100024
Michel Dänzer michel@daenzer.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #130009|text/x-log |text/plain mime type| |
https://bugs.freedesktop.org/show_bug.cgi?id=100024
Michel Dänzer michel@daenzer.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Product|DRI |Mesa Version|XOrg git |unspecified Component|DRM/Radeon |Drivers/Gallium/radeonsi QA Contact| |dri-devel@lists.freedesktop | |.org
--- Comment #11 from Michel Dänzer michel@daenzer.net --- I don't think there's a kernel-side bug here — it simply runs out of graphics memory, and correctly reports that to userspace.
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #12 from Julien Isorce julien.isorce@gmail.com --- Hi Michel. Thx you for your comment. In a way it is a good and only my attached mesa will be needed to fix the test. I will send it to the mailing list.
But I still do not properly understand why there is not enough graphic memory because lspci reports 2048M. And there are some contradictions depending on the subSize for the test sequence which is:
for i in 0 1: glGenTextures glTexImage2D maxSize glTexSubImage2D subSize = maxSize / 2. glDeleteTextures
A: The kernel trace ENOMEM appears with: subSize = maxSize - 1 -> "radeon: Failed to allocate a buffer" subSize = 3 * maxSize / 4 -> "radeon: Failed to allocate a buffer" subSize = maxSize / 2 -> "radeon: Not enough memory for command submission"
B: It works with: subSize = maxSize subSize = maxSize / 4
Isn't A and B a contradiction ? For me A should succeeds because glDeteteTextures should . Also note that on other
Also by calling glFush() within an additional loop iteration i = 2, it can recover so it will fail for iteration i = 1 but succeeds for i = 2. So what could the explanation here ? Should the driver just flush the cs automatically in that case like it does for subSize = maxSize ? Sorry I am just trying to understand :). Thx!
https://bugs.freedesktop.org/show_bug.cgi?id=100024
--- Comment #13 from Julien Isorce julien.isorce@gmail.com --- Oups the part "because glDeteteTextures should . Also note that on other" of my comment should have been removed.
https://bugs.freedesktop.org/show_bug.cgi?id=100024
Julien Isorce julien.isorce@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #130005|0 |1 is obsolete| |
--- Comment #14 from Julien Isorce julien.isorce@gmail.com --- Created attachment 130023 --> https://bugs.freedesktop.org/attachment.cgi?id=130023&action=edit new piglit test max-texture-size2 to reproduce the problem
Typo fix "maxSide -> maxSize" and some cleanup.
https://bugs.freedesktop.org/show_bug.cgi?id=100024
GitLab Migration User gitlab-migration@fdo.invalid changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |MOVED
--- Comment #15 from GitLab Migration User gitlab-migration@fdo.invalid --- -- GitLab Migration Automatic Message --
This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.
You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/1257.
dri-devel@lists.freedesktop.org