OpenGL 3.3 issue with dual AMD GPUs with monitor setup #85628

Closed
opened 2021-02-14 16:35:29 +01:00 by Grzegorz Wereszko · 21 comments

System Information
Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: Radeon RX Vega ATI Technologies Inc. 4.5.14757 Core Profile Context 20.12.1 27.20.14501.28009

Blender Version
Broken: version: 2.90.1, branch: master, commit date: 2020-09-23 06:43, hash: 3e85bb34d0
Worked: Unsure to be honest.

Short description of error
I have dual GPU setup. Radeon 6900xt on main monitor and Radeon Vega connected to the other. Usually Blender launches on main monitor. But when i change the layout (split a screen) or other changes and save these changes then it launches on the second(vega) the next time. And when I try to open Preferences window. I get error "A Graphics card and driver support for OpenGL 3.3 or higher is required. Install the latest driver for your graphics card may resolve the issue. The program will now close"

As both GPU's support OpenGL 3.3, and render view ports correctly, along with teamed GPU rendering in Cycles, this error is a "false error" and closed my instance.

Even after "file-> defaults -> load factory defaults" still gets same error

Exact steps for others to reproduce the error

  • Launch blender with default settings - will open on main screen, default cube.
  • Adjust the layout splitting one of the windows
  • Go to "file -> defaults ->save startup file"
  • exit
  • Launch blender. will now open on the secondary monitor...
  • "edit -> Preferences"
  • Crash (exit?)
  • launch Blender - will always open on secondary monitor until i delete the configuration fields for blender
  • drag blender window on to the main screen
  • "edit -> Preferences" (or any other popup window)
  • Crash .. :(

I tried also on 2.83 LTS.. same issue

**System Information** Operating system: Windows-10-10.0.18362-SP0 64 Bits Graphics card: Radeon RX Vega ATI Technologies Inc. 4.5.14757 Core Profile Context 20.12.1 27.20.14501.28009 **Blender Version** Broken: version: 2.90.1, branch: master, commit date: 2020-09-23 06:43, hash: `3e85bb34d0` Worked: Unsure to be honest. **Short description of error** I have dual GPU setup. Radeon 6900xt on main monitor and Radeon Vega connected to the other. Usually Blender launches on main monitor. But when i change the layout (split a screen) or other changes and save these changes then it launches on the second(vega) the next time. And when I try to open Preferences window. I get error "A Graphics card and driver support for OpenGL 3.3 or higher is required. Install the latest driver for your graphics card may resolve the issue. The program will now close" As both GPU's support OpenGL 3.3, and render view ports correctly, along with teamed GPU rendering in Cycles, this error is a "false error" and closed my instance. Even after "file-> defaults -> load factory defaults" still gets same error **Exact steps for others to reproduce the error** - Launch blender with default settings - will open on main screen, default cube. - Adjust the layout splitting one of the windows - Go to "file -> defaults ->save startup file" - exit - Launch blender. will now open on the secondary monitor... - "edit -> Preferences" - Crash (exit?) - launch Blender - will always open on secondary monitor until i delete the configuration fields for blender - drag blender window on to the main screen - "edit -> Preferences" (or any other popup window) - Crash .. :( I tried also on 2.83 LTS.. same issue

Added subscriber: @Prodeous

Added subscriber: @Prodeous
Grzegorz Wereszko changed title from Fake OpenGL 3.3 issue with dual AMD GPUs with monitor setup to OpenGL 3.3 issue with dual AMD GPUs with monitor setup 2021-02-14 22:13:36 +01:00

Added subscriber: @Pierre-39

Added subscriber: @Pierre-39
Pierre Béliveau self-assigned this 2021-02-25 17:26:47 +01:00

Hello,
I solved my problem by right-clicking the Blender shortcut and selecting the graphic card…
… 1 or 2 works fine.
P.B.

https://1drv.ms/u/s!Arxnz6q7Jq221wTA1C84k5Bm8jPy?e=yJffgO


I have the same problem with 2 NVidia M2000 GPUs.

2.90.1 works fine
2.91.2 does not work
2.93.0 Alpha works fine

Pierre Béliveau

Hello, I solved my problem by right-clicking the Blender shortcut and selecting the graphic card… … 1 or 2 works fine. P.B. https://1drv.ms/u/s!Arxnz6q7Jq221wTA1C84k5Bm8jPy?e=yJffgO _____________________________________ I have the same problem with 2 NVidia M2000 GPUs. 2.90.1 works fine 2.91.2 does not work 2.93.0 Alpha works fine Pierre Béliveau

Added subscriber: @mano-wii

Added subscriber: @mano-wii

Not sure what do you mean by:

  • Adjust the layout splitting one of the windows

Create a new window? split one of the editor/areas of layout?

Not sure what do you mean by: > - Adjust the layout splitting one of the windows Create a new window? split one of the editor/areas of layout?

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos

I have encountered exactly the same issue on my new Windows 10 64bits system with two RTX 3090 GPUs.

In #85628#1119647, @mano-wii wrote:
Create a new window? split one of the editor/areas of layout?

The gist of it is having a startup layout with a window on the secondary monitor according to Windows display layout.
You can do it by Shift-splitting any area, going to Window > New Main Window or Window > New Window, it really doesn't matter.
What matters is the window must be placed on the secondary monitor on the startup file.

If the window is on the main monitor no error occurs, but if it is moved so it sits on the the second display the OpenGl and the startup file is saved from File > Defaults > Save startup file, an error will pop up on next Blender session, preventing it for successfully opening, until the statrup.blend is removed.

Having the default startup layout with two Blender windows open by default on the main display doesn't cause any issues.
Manually moving the window to the secondary display after startup also doesn't cause errors.
Creating new windows an placing them in the secondary display also doesn't reveal any errors.

My blind guess is that Blender somehow fails to create two new OPenGL contexts simultaneously on startup.

Is there any log or debug info we can provide to help diagnose the issue? let me know what to provide and I'll be glad to help

I have encountered exactly the same issue on my new Windows 10 64bits system with two RTX 3090 GPUs. > In #85628#1119647, @mano-wii wrote: > Create a new window? split one of the editor/areas of layout? The gist of it is having a startup layout with a window on the secondary monitor according to Windows display layout. You can do it by `Shift`-splitting any area, going to *Window > New Main Window* or *Window > New Window*, it really doesn't matter. What matters is the window must be placed on the secondary monitor on the startup file. If the window is on the main monitor no error occurs, but if it is moved so it sits on the the second display the OpenGl and the startup file is saved from *File > Defaults > Save startup file*, an error will pop up on next Blender session, preventing it for successfully opening, until the statrup.blend is removed. Having the default startup layout with two Blender windows open by default on the main display doesn't cause any issues. Manually moving the window to the secondary display after startup also doesn't cause errors. Creating new windows an placing them in the secondary display also doesn't reveal any errors. My blind guess is that Blender somehow fails to create two new OPenGL contexts simultaneously on startup. Is there any log or debug info we can provide to help diagnose the issue? let me know what to provide and I'll be glad to help

Tested again with both 2.83 LTS and 2.92, I saved a startup.blend file to launch Blender with a single window on the secondary monitor only.
It starts successfully, but if after I try to create a new window by any of the above methods it fails and crashes to desktop.

Here is the debug log and system info if it helps

blender_debug_output.txt
blender_system_info.txt

Tested again with both 2.83 LTS and 2.92, I saved a `startup.blend` file to launch Blender with a single window on the secondary monitor only. It starts successfully, but if after I try to create a new window by any of the above methods it fails and crashes to desktop. Here is the debug log and system info if it helps [blender_debug_output.txt](https://archive.blender.org/developer/F9844136/blender_debug_output.txt) [blender_system_info.txt](https://archive.blender.org/developer/F9844137/blender_system_info.txt)
Member

Added subscriber: @Harley

Added subscriber: @Harley
Member

@Pierre-39 - 2.93.0 Alpha works fine

It is possible that master might mask this problem a bit. Not that it solves it at all, but it now does a better job of opening child windows on the same monitor as the parent, so harder to see this problem even if it remains.

I personally don't get this particular error though (three monitors on a single video card, not on two), so can't confirm or help otherwise.

> @Pierre-39 - 2.93.0 Alpha works fine It is possible that master might **mask** this problem a bit. Not that it solves it at all, but it now does a better job of opening child windows on the same monitor as the parent, so harder to see this problem even if it remains. I personally don't get this particular error though (three monitors on a single video card, not on two), so can't confirm or help otherwise.

In #85628#1119857, @Harley wrote:

@Pierre-39 - 2.93.0 Alpha works fine

It is possible that master might mask this problem a bit. Not that it solves it at all, but it now does a better job of opening child windows on the same monitor as the parent, so harder to see this problem even if it remains.

Indeed tested right now with lastest alpha version: 2.93.0 Alpha, branch: master, commit date: 2021-02-25 05:34, hash: 0e1c6a29cbb2, type: Release and it no longer crashes, but the underlying issue is till there whatever it is.
Saving a startup file that has the main window on the secondary monitor, and moving the window to the main monitor made Blender OpenGL not update, resizing the window just stretches whatever was last drawn.
Note that I didn't stretch or alter the screenshot in any way, I just resized the window, you can see the header has correct proportions but the content no longer updates, it just distorts with the border.

20210228_025254.png

> In #85628#1119857, @Harley wrote: >> @Pierre-39 - 2.93.0 Alpha works fine > > It is possible that master might **mask** this problem a bit. Not that it solves it at all, but it now does a better job of opening child windows on the same monitor as the parent, so harder to see this problem even if it remains. Indeed tested right now with lastest alpha `version: 2.93.0 Alpha, branch: master, commit date: 2021-02-25 05:34, hash: 0e1c6a29cbb2, type: Release` and it no longer crashes, but the underlying issue is till there whatever it is. Saving a startup file that has the main window on the secondary monitor, and moving the window to the main monitor made Blender OpenGL not update, resizing the window just stretches whatever was last drawn. Note that I didn't stretch or alter the screenshot in any way, I just resized the window, you can see the header has correct proportions but the content no longer updates, it just distorts with the border. ![20210228_025254.png](https://archive.blender.org/developer/F9849833/20210228_025254.png)

Just downloaded the latest build. blender-2.93.0-0e1c6a29cbb2-windows64

The issue persists.

The moment i just split the 3d view port into two (within the single window) and save that as default profile. Opened, and popped up on second screen, f12 (default is eevee) - crashes. I open again, move the blender window to main monitor, F12 - OpenGL3.3 issue

I deleted the profile, opened, and it opened on main monitor, F12, worked good.

Did zero changes. Just Saved Default profile, not a single change it its layout. exit. started blender, opened on second monitor, and crash/opengl 3.3 error.

So all I just did is saved the default profile... :(

Just downloaded the latest build. blender-2.93.0-0e1c6a29cbb2-windows64 The issue persists. The moment i just split the 3d view port into two (within the single window) and save that as default profile. Opened, and popped up on second screen, f12 (default is eevee) - crashes. I open again, move the blender window to main monitor, F12 - OpenGL3.3 issue I deleted the profile, opened, and it opened on main monitor, F12, worked good. Did zero changes. Just Saved Default profile, not a single change it its layout. exit. started blender, opened on second monitor, and crash/opengl 3.3 error. So all I just did is saved the default profile... :(
Member

Adding more details here:

Under Windows, only the primary adapter can use hardware-accelerated OpenGL. All other adapters will use the MS OpenGL 1.1 software renderer. This might be different on other platforms, and is different for DirectX. So if you plug multiple monitors into the same card everything works great. But plug your monitors into different adapters and you end up in a bad situation that we make more confusing that it should be.

We don't check once for OpenGL version, but instead check that we get a context of the correct type for each window we open. If the context is not correct for any new window then we show a MessageBox showing a title of "Blender - Unsupported Graphics Card or Driver" and text of "A graphics card and driver with support for OpenGL 3.3 or higher is required. Installing the latest driver for your graphics card may resolve the issue. The program will now close." Then we "exit(0)"

So assume you do the bad thing and plug multiple monitors into multiple adapters. If Blender just opens with a single window on the monitor connected to the primary adapter then it works. But if blender opens with a single window on a monitor hooked up to the other adapter it will die.

But you can also get situations where it sometimes works. If your blend file opensmultiple windows spread over multiple monitors then it will die because one will fail the test, which closes the program.

We might be able to be less rude about always closing the app. We could exit when a main window (has no parent), but not for others. And then handle secondary windows not opening in a nicer way.

Or - probably better - we could test for this situation more specifically.

In newDrawingContext(), if we are unable to get at least a 3.3 context then EnumDisplayDevices(). If there are more than one, and any are DISPLAY_DEVICE_ACTIVE but not DISPLAY_DEVICE_PRIMARY_DEVICE then we could probably give a better error message instructing the user to plug their multiple monitors into one adapter.

Adding more details here: Under Windows, only the primary adapter can use hardware-accelerated OpenGL. All other adapters will use the MS OpenGL 1.1 software renderer. This might be different on other platforms, and is different for DirectX. So if you plug multiple monitors into the *same* card everything works great. But plug your monitors into different adapters and you end up in a bad situation that we make more confusing that it should be. We don't check once for OpenGL version, but instead check that we get a context of the correct type for each window we open. If the context is not correct for any new window then we show a MessageBox showing a title of "Blender - Unsupported Graphics Card or Driver" and text of "A graphics card and driver with support for OpenGL 3.3 or higher is required. Installing the latest driver for your graphics card may resolve the issue. The program will now close." Then we "exit(0)" So assume you do the bad thing and plug multiple monitors into multiple adapters. If Blender just opens with a single window on the monitor connected to the primary adapter then it works. But if blender opens with a single window on a monitor hooked up to the other adapter it will die. But you can also get situations where it sometimes works. If your blend file opens*multiple* windows spread over multiple monitors then it will die because one will fail the test, which closes the program. We might be able to be less rude about always closing the app. We could exit when a main window (has no parent), but not for others. And then handle secondary windows not opening in a nicer way. Or - probably better - we could test for this situation more specifically. In newDrawingContext(), if we are unable to get at least a 3.3 context then EnumDisplayDevices(). If there are more than one, and any are DISPLAY_DEVICE_ACTIVE but not DISPLAY_DEVICE_PRIMARY_DEVICE then we could probably give a better error message instructing the user to plug their multiple monitors into one adapter.

This seems to have more severe side effects I have run into in the meantime, besides just failing startup with a window on the secondary monitor.
During regular operation if a window new child is opened on the secondary monitor it causes Blender to crash, leading to potential data loss. Say for example when spawning a file browser window for browsing for an image texture, when appending something, or subdividing an area into a new window.

There seems to be a workaround discovered by user Hugo Bp at Blender Stack Exchange whoever.
For NVidia cards, through the NVidia Control Panel under Manage 3D Settings either in the Global Settings tab or in the Blender specific Program Settings, if you set OpenGL GPU to NVidia GeForce RTX #### (2 of 2) it no longer crashes.

1.png

This seems to have more severe side effects I have run into in the meantime, besides just failing startup with a window on the secondary monitor. During regular operation if a window new child is opened on the secondary monitor it causes Blender to crash, leading to potential data loss. Say for example when spawning a file browser window for browsing for an image texture, when appending something, or subdividing an area into a new window. There seems to be a workaround discovered by user [Hugo Bp at Blender Stack Exchange ](https://blender.stackexchange.com/questions/233674/rtx-3090-unsupported-graphics-card-or-driver-opengl-3-3-or-higher-recquired) whoever. For NVidia cards, through the NVidia Control Panel under *Manage 3D Settings* either in the *Global Settings* tab or in the Blender specific *Program Settings*, if you set OpenGL GPU to *NVidia GeForce RTX #### (2 of 2)* it no longer crashes. ![1.png](https://archive.blender.org/developer/F10273823/1.png)
Member

@Harley -
In newDrawingContext(), if we are unable to get at least a 3.3 context then EnumDisplayDevices(). If there are more than one, and any are DISPLAY_DEVICE_ACTIVE but not DISPLAY_DEVICE_PRIMARY_DEVICE then we could probably give a better error message instructing the user to plug their multiple monitors into one adapter.

Just noting that my assumption shown above was incorrect. I thought I could detect this situation and therefore give a more meaningful error message to the user. However I could not detect this state. It is still possible that the state can be detected (outside of using those flags) but I don't have a computer with multiple adapters (only multiple monitors on a single adapter).

>@Harley - > In newDrawingContext(), if we are unable to get at least a 3.3 context then EnumDisplayDevices(). If there are more than one, and any are DISPLAY_DEVICE_ACTIVE but not DISPLAY_DEVICE_PRIMARY_DEVICE then we could probably give a better error message instructing the user to plug their multiple monitors into one adapter. Just noting that my assumption shown above was incorrect. I thought I could detect this situation and therefore give a more meaningful error message to the user. However I could not detect this state. It is still possible that the state can be detected (outside of using those flags) but I don't have a computer with multiple adapters (only multiple monitors on a single adapter).

In #85628#1203286, @Harley wrote:

@Harley -
In newDrawingContext(), if we are unable to get at least a 3.3 context then EnumDisplayDevices(). If there are more than one, and any are DISPLAY_DEVICE_ACTIVE but not DISPLAY_DEVICE_PRIMARY_DEVICE then we could probably give a better error message instructing the user to plug their multiple monitors into one adapter.

Just noting that my assumption shown above was incorrect. I thought I could detect this situation and therefore give a more meaningful error message to the user. However I could not detect this state. It is still possible that the state can be detected (outside of using those flags) but I don't have a computer with multiple adapters (only multiple monitors on a single adapter).

If this is something I could help with let me know, I'm not a coder but can follow instructions.
If there is some sort of log I can capture, or some steps that don't require anything obscene like getting Blender compiling in my machine, I'd be glad to assist in getting this sorted out in anyway I can.

> In #85628#1203286, @Harley wrote: >>@Harley - >> In newDrawingContext(), if we are unable to get at least a 3.3 context then EnumDisplayDevices(). If there are more than one, and any are DISPLAY_DEVICE_ACTIVE but not DISPLAY_DEVICE_PRIMARY_DEVICE then we could probably give a better error message instructing the user to plug their multiple monitors into one adapter. > > Just noting that my assumption shown above was incorrect. I thought I could detect this situation and therefore give a more meaningful error message to the user. However I could not detect this state. It is still possible that the state can be detected (outside of using those flags) but I don't have a computer with multiple adapters (only multiple monitors on a single adapter). If this is something I could help with let me know, I'm not a coder but can follow instructions. If there is some sort of log I can capture, or some steps that don't require anything obscene like getting Blender compiling in my machine, I'd be glad to assist in getting this sorted out in anyway I can.

Could the error be false positive? Both GPU's (Vega + RDNA2 gpu's) are fully OpenGL 3.3 compliant, and i can create new viewport and move it form one Screen/GPU to another and nothing crashes.

This is only when I make it as a default layout then things go south.

Could the error be false positive? Both GPU's (Vega + RDNA2 gpu's) are fully OpenGL 3.3 compliant, and i can create new viewport and move it form one Screen/GPU to another and nothing crashes. This is only when I make it as a default layout then things go south.
Member

In #85628#1203453, @Prodeous wrote:
Could the error be false positive? Both GPU's (Vega + RDNA2 gpu's) are fully OpenGL 3.3 compliant, and i can create new viewport and move it form one Screen/GPU to another and nothing crashes. This is only when I make it as a default layout then things go south.

Its not that anything crashes. We find this condition of the OpenGL context not correct, show an error message, and deliberately exit. Although both your cards are 3.3 compliant on their own they don't report so in this particular circumstance.

But no need to guess really. We just need a person with such a setup (multiple monitors connected to multiple video cards) to compile blender from sources and breakpoint what is happening inside newDrawingContext() at that time. and possibly figure out a way to detect the situation and at least give a better error message, even if just "One of your monitors is unable to support hardware-accelerated OpenGL.\n Plugging all your monitors into your primary adapter may resolve the issue.\n\n The program will now close."

> In #85628#1203453, @Prodeous wrote: > Could the error be false positive? Both GPU's (Vega + RDNA2 gpu's) are fully OpenGL 3.3 compliant, and i can create new viewport and move it form one Screen/GPU to another and nothing crashes. This is only when I make it as a default layout then things go south. Its not that anything crashes. We find this condition of the OpenGL context not correct, show an error message, and deliberately exit. Although both your cards are 3.3 compliant on their own they don't report so in this particular circumstance. But no need to guess really. We just need a person with such a setup (multiple monitors connected to multiple video cards) to compile blender from sources and breakpoint what is happening inside newDrawingContext() at that time. and possibly figure out a way to detect the situation and at least give a better error message, even if just "One of your monitors is unable to support hardware-accelerated OpenGL.\n Plugging all your monitors into your primary adapter may resolve the issue.\n\n The program will now close."
Member

Added subscriber: @PratikPB2123

Added subscriber: @PratikPB2123
Member

We already have a report open for this issue. So I will merge into that one: #62651 (Dual monitor on separate graphics card driver error)
Thanks for the report!

We already have a report open for this issue. So I will merge into that one: #62651 (Dual monitor on separate graphics card driver error) Thanks for the report!
Member

Closed as duplicate of #62651

Closed as duplicate of #62651
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
6 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#85628
No description provided.