update OpenGL requirements for Blender 2.8 #49012

Closed
opened 2016-08-03 22:47:00 +02:00 by Mike Erwin · 17 comments
Member

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.

platform OpenGL GLSL extensions
Windows 3.3 compat profile 3.3 compat
Linux 3.3 compat profile 3.3 compat
Linux (Mesa) 3.0 1.3 ARB_draw_elements_base_vertex
Mac 2.1 1.2 ARB_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:

platform OpenGL GLSL
all 3.3 core profile 3.3
and life will be good!
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. |**platform**|**OpenGL**|**GLSL**|**extensions**| | -- | -- | -- | -- | |Windows|3.3 compat profile|3.3 compat| |Linux|3.3 compat profile|3.3 compat| |Linux (Mesa)|3.0|1.3|ARB_draw_elements_base_vertex| |Mac|2.1|1.2|ARB_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: |**platform**|**OpenGL**|**GLSL**| | -- | -- | -- | |all|3.3 core profile|3.3| and life will be good!
Mike Erwin self-assigned this 2016-08-03 22:47:00 +02:00
Author
Member

Changed status to: 'Open'

Changed status to: 'Open'
Author
Member

Added subscriber: @MikeErwin

Added subscriber: @MikeErwin
Author
Member

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.

According to [Apple's OpenGL matrix ](https://developer.apple.com/opengl/capabilities/GLInfo_1075.html) 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.
Author
Member

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 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.
Member

Added subscriber: @Blendify

Added subscriber: @Blendify

Added subscriber: @BartekMoniewski

Added subscriber: @BartekMoniewski
Author
Member

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.

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.
Author
Member

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!

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!

Added subscriber: @Zeirus

Added subscriber: @Zeirus

Removed subscriber: @Zeirus

Removed subscriber: @Zeirus

Added subscriber: @AnthonyEdlin

Added subscriber: @AnthonyEdlin
Member

Added subscriber: @Stefan_Werner

Added subscriber: @Stefan_Werner
Author
Member

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'
Author
Member

As of c8ab7d4656 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.

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*.

Added subscriber: @nokipaike

Added subscriber: @nokipaike

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

Traceblender.zip

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 [Traceblender.zip](https://archive.blender.org/developer/F4304464/Traceblender.zip)

Added subscriber: @lastrodamo

Added subscriber: @lastrodamo
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
8 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#49012
No description provided.