From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon@freedesktop.org
Subject: [Bug 82977] New: freeze when copying between larger OpenGL buffers
(glCopyBufferSubData)
Date: Fri, 22 Aug 2014 22:32:07 +0000
Message-ID:
Priority
medium
Bug ID
82977
Assignee
dri-devel@lists.freedesktop.org
Summary
freeze when copying between larger OpenGL buffers (glCopyBufferSubData)
Severity
normal
Classification
Unclassified
OS
Linux (All)
Reporter
osbios@web.de
Hardware
x86-64 (AMD64)
Status
NEW
Version
git
Component
Drivers/Gallium/radeonsi
Product
Mesa
Created attachment 105127 [details]
glxinfo
Ubuntu 14.04. With Oibaf repository for GPU drivers.
Radeon 7870 (Pitcairn)
When I try to run glCopyBufferSubData on large buffers (128MB works ok, 200MiB
not) my Desktop freezes and I only can move the mouse around.
The mouse curser image stays the same after that. E.g. a normal pointer or text
marker icon.
I have no relevant message in dmsg.0 or Xorg.1.log, as far as I can tell.
Minimal example code that will trigger the freeze (After using sdl2 to init
Core GL3.3 Context + Window):
int bufferSize = 200 * 1024 * 1024;
GLuint clientBufferId, serverBufferId;
glGenBuffers(1, &clientBufferId);
glBindBuffer(GL_ARRAY_BUFFER, clientBufferId);
glBufferStorage(GL_ARRAY_BUFFER, bufferSize, 0, /*GL_DYNAMIC_STORAGE_BIT |
GL_MAP_WRITE_BIT | GL_MAP_READ_BIT | GL_MAP_PERSISTENT_BIT|
GL_CLIENT_STORAGE_BIT*/0);
glGenBuffers(1, &serverBufferId);
glBindBuffer(GL_ARRAY_BUFFER, serverBufferId);
glBufferStorage(GL_ARRAY_BUFFER, bufferSize, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_COPY_READ_BUFFER, clientBufferId);
glBindBuffer(GL_COPY_WRITE_BUFFER, serverBufferId);
glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, 0, 0,
bufferSize);