This is a Linux OpenGL application.
Run app on Intel GPU.
Updating UBO's uses 'glBufferSubData' by default, works OK.
Press SPACE to change updating to different modes and it starts to break.
App works fine on Windows GeForce and Android GL ES 3 using same code.
Code for updating UBO's:
glBindBuffer(GL_UNIFORM_BUFFER, buffer.buffer);
switch(GL_UBO_MODE)
{
default /*0 GL_BUFFER_SUB*/ : glBufferSubData(GL_UNIFORM_BUFFER, 0, buffer.size, data); break;
case /*1*/GL_BUFFER_SUB_RESET_PART : glBufferData(GL_UNIFORM_BUFFER, buffer.size, null, GL_DYNAMIC); glBufferSubData(GL_UNIFORM_BUFFER, 0, buffer.size, data); break;
case /*2*/GL_BUFFER_SUB_RESET_FULL : glBufferData(GL_UNIFORM_BUFFER, full_size, null, GL_DYNAMIC); glBufferSubData(GL_UNIFORM_BUFFER, 0, buffer.size, data); break;
case /*3*/GL_BUFFER_SUB_RESET_PART_FROM: glBufferData(GL_UNIFORM_BUFFER, buffer.size, data, GL_DYNAMIC); break;
case /*4*/GL_BUFFER_SUB_RESET_FULL_FROM: glBufferData(GL_UNIFORM_BUFFER, full_size, data, GL_DYNAMIC); break;
case /*8*/GL_BUFFER_MAP : if(Ptr dest=glMapBufferRange(GL_UNIFORM_BUFFER, 0, buffer.size, GL_MAP_WRITE_BIT|GL_MAP_INVALIDATE_BUFFER_BIT))
{
memcpy(dest, data, buffer.size);
glUnmapBuffer(GL_UNIFORM_BUFFER);
}break;
}
Tested on Ubuntu 19.04
Intel Core i7-3632QM CPU @ 2.20 GHz
Intel ivybridge Mobile
Mesa DRI Intel Ivybridge Mobile
App:
https://www.dropbox.com/s/d5u8mlrcvdxb08o/Linux%20UBO%20update%20Fail.zip?dl=0
You can see the shadows flickering:
Link Copied
Hello GSlaz,
Thank you for posting on the Intel® communities.
I would like to inform you that Intel® does not provide direct downloads and technical support for Linux drivers. The Intel® Graphics Linux driver is primarily supported through the original equipment manufacturer (OEM), the Linux distribution vendor, or by the Intel Open Source Technology Center at 01.org/linuxgraphics.
We will close this inquiry; but, if you need further assistance, please post a new question.
Esteban Ch.
Intel Customer Support Technician
A Contingent Worker at Intel
For more complete information about compiler optimizations, see our Optimization Notice.