From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon@freedesktop.org
Subject: [Bug 108261] [amdgpu][GL_ARB_bindless_texture][opengl 4] GPU hang on
AMD Raven
Date: Sat, 06 Oct 2018 20:07:38 +0000
Message-ID:
Bug ID
108261
Summary
[amdgpu][GL_ARB_bindless_texture][opengl 4] GPU hang on AMD R=
aven
Product
Mesa
Version
git
Hardware
Other
OS
All
Status
NEW
Severity
normal
Priority
medium
Component
Drivers/Gallium/radeonsi
Assignee
dri-devel@lists.freedesktop.org
Reporter
RobusGrobus95@gmail.com
QA Contact
dri-devel@lists.freedesktop.org
GPU hang appears when trying to render scene to FBO (framebuff=
er object) with
attached texture with resident handle, but if all the handles of attached
texture are not reesident (or if there is no handles), hang disappears. For
example this pseudocode causes GPU hang:
GLuint renderbufId;
glCreateRenderbuffers(1, &renderbufId);
glNamedRenderbufferStorage(renderbufId, GL_DEPTH_COMPONENT, width(),
height());
GLuint texId;
glCreateTextures(GL_TEXTURE_2D, 1, &texId);
glTextureStorage2D(texId, 1, GL_RGBA8, width(), height());
GLuint64 handle =3D glGetTextureHandleARB(texId);
glMakeTextureHandleResidentARB(handle);
glBindFramebuffer(GL_FRAMEBUFFER, fboID);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texId, 0);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
GL_RENDERBUFFER, rboId);
//render some triangles
glBindFramebuffer(GL_FRAMEBUFFER, 0);
//render main scene
glSwapBuffers();
And this not:
GLuint renderbufId;
glCreateRenderbuffers(1, &renderbufId);
glNamedRenderbufferStorage(renderbufId, GL_DEPTH_COMPONENT, width(),
height());
GLuint texId;
glCreateTextures(GL_TEXTURE_2D, 1, &texId);
glTextureStorage2D(texId, 1, GL_RGBA8, width(), height());
GLuint64 handle =3D glGetTextureHandleARB(texId);
std::cout << handle << std::endl; //prevent optimizing out
glBindFramebuffer(GL_FRAMEBUFFER, fboID);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texId, 0);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
GL_RENDERBUFFER, rboId);
//render some triangles
glBindFramebuffer(GL_FRAMEBUFFER, 0);
//render main scene
glSwapBuffers();
I can try to write full cpp sample for exposing the hang, if it's needed. T=
here
is already open source graphic engine (my "pet" project) affected=
by the hang,
but code is quite complex (https://gitlab.com/KawaiiGraphics/Kawaii3D
https://gitlab.com/K=
awaiiGraphics/Misaka3D ;=20
workaround added in commit b53d98dacff2b0392c2143c8901289e93ddd8623, so only
previous versions are affected).
My hardware:
APU: AMD Ryzen 5 2400G (with integrated GPU Radeon Vega 11 Graphics)
System board: MSI AM4 X470 Gaming Pro
RAM: Goodram Iridium 16Gb (8+8 Gb dual-channel 2800MHz)