Page MenuHome

update OpenGL requirements for Blender 2.8
Closed, ResolvedPublic

Description

OpenGL 3.3 core profile will be our final target on all platforms. Until all our code is ready we can use 3.3 compatibility profile or "legacy" GL on platforms that don't support compatibility profile.

What can we do today to prepare? Set minimum requirements as close to 3.3 as possible.

platformOpenGLGLSLextensions
Windows3.3 compat profile3.3 compat
Linux3.3 compat profile3.3 compat
Linux (Mesa)3.01.3ARB_draw_elements_base_vertex
Mac2.11.2ARB_draw_elements_base_vertex, EXT_gpu_shader4, ARB_framebuffer_object, APPLE_flush_buffer_range

This lets us simplify context setup code, guarantee certain features on certain platforms, and alert testers that "hey your GPU is old, you'll need to upgrade". I'd like to do this early in development to minimize surprises later on.

Eventually we'll get to this:

platformOpenGLGLSL
all3.3 core profile3.3

and life will be good!

Details

Differential Revisions
D2603: Option to build with OpenGL core
Type
To Do

Related Objects

Event Timeline

According to Apple's OpenGL matrix the following helpful extensions are available on all GPUs that are capable of running Blender 2.8:

  • EXT_gpu_shader4
  • ARB_framebuffer_object

I added these to our Mac minimum requirements. Linux and Windows use GL 3.x which absorbs these extensions. This will keep our shaders and GL code from diverging too much during development.

Mike Erwin (merwin) added a comment.EditedAug 7 2016, 6:11 AM

Added APPLE_flush_buffer_range to Mac requirements. Useful when updating part of a buffer (OpenGL 3 has glMapBufferRange). This extension has been around a long time and all GPUs support it.

Added ARB_draw_elements_base_vertex to Mac & Mesa requirements. Specifically for these functions:

glDrawElementsBaseVertex
glDrawRangeElementsBaseVertex

This allows us to make compact index buffers, conserving VRAM (mostly inside Gawain). Also can be used to store multiple similar parts in a vertex buffer, then select which part to draw without reindexing.

It's available on all Macs running OS 10.7.x.
Also available on Mesa, tested on Fedora 24.

Transition to OpenGL 3.2 will be instant, since this extension doesn't add ARB suffix to the new functions.

We decided to bump system requirements to Mac OS 10.9 "Mavericks". Mostly for its improved C++11 runtime. This also lets us bump OpenGL version to 3.3 on all platforms!

Mike Erwin (merwin) closed this task as Resolved.May 12 2017, 12:37 AM

As of c8ab7d46566c4a65c6176cd2ebe27778512f7fef we use OpenGL 3.3 core profile on all platforms. We still have some implementation and cleanup work ahead, but this milestone is effectively done.

hi I tried to start on linux blender on an old laptop that mounts a radeon hd 2600 XT with 512 mb video ram but blender crash on startup.
on ubuntu 18.04 second glxinfo with the latest mesa drivers in development is this card supports opengl 3.3 and shading language 3.3

this gpu turns blender 2.79 which is a beauty and even today manages to safely handle scenes full of heavy models

the glx info:
OpenGL renderer string: AMD RV630 (DRM 2.50.0 / 4.15.0-32-generic, LLVM 8.0.0)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.3.0-devel - padoka PPA
OpenGL core profile shading language version string: 3.30

I certainly do not pretend it does turn eevee's advanced shading
but at least blender 2.8 should start keeping the old gl skills of blender 2.79

the blender version i have tested is blender-2.80-4a3348cfe04-linux-glibc219-x86_64
I made an apitrace to see where the problem appears
can be opened with apitrace viewer