Bug 108261 - [amdgpu][GL_ARB_bindless_texture][opengl 4] GPU hang on AMD Raven
Summary: [amdgpu][GL_ARB_bindless_texture][opengl 4] GPU hang on AMD Raven
Status: RESOLVED MOVED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Gallium/radeonsi (show other bugs)
Version: git
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Default DRI bug account
QA Contact: Default DRI bug account
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-10-06 20:07 UTC by RobusGrobus95
Modified: 2019-09-25 18:10 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description RobusGrobus95 2018-10-06 20:07:38 UTC
GPU hang appears when trying to render scene to FBO (framebuffer 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 = 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 = 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. There 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/KawaiiGraphics/Misaka3D ; 
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)
Comment 1 RobusGrobus95 2018-10-06 20:09:14 UTC
> workaround added in commit b53d98dacff2b0392c2143c8901289e93ddd8623, so only previous versions are affected
this about https://gitlab.com/KawaiiGraphics/Misaka3D
Comment 2 Domen 2018-11-26 11:32:50 UTC
We have same issue. Could you link fault info from kernel messages ?
Comment 3 GitLab Migration User 2019-09-25 18:10:00 UTC
-- 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/1331.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.