Page MenuHome

OpenSubdiv does not render in Multiple Windows/3D Viewports
Open, Confirmed, MediumPublic

Description

System Information
Operating system - Windows 8.1 (Lenovo Laptop)
Graphics Card - AMD A8-6410 APU with AMD Radeon R5 Graphics

Broken: Blender 2.76 RC3
Worked: -

Short Description of Error
Upon opening a secondary window with a 3D Viewport, applying the Subsurf modifier and checking "Use OpenSubdiv" causes Blender to render the object in first window, but not in the second window. Object will render if the shade mode in second 3D View is set to "Rendered", but fails on all other modes. Object will render if the second viewport is in the same original window. Switching the original viewport to another editor will not result in a render for the second viewport.

Exact Steps for Others to Reproduce the Error

  1. Open Blender with factory settings.
  2. Open "User Preferences"
  3. Under "System", set "OpenSubdiv Compute" to any setting (does not seem to affect outcome.)
  4. Open a second window in Blender.
  5. Apply the SubSurf Modifier with Catmull-Clark set for any object, and check mark "Use OpenSubdiv".
  6. Result should be that the object should disappear in the second 3D Viewport.

Details

Type
To Do

Event Timeline

Joshua McMillan (Jmcm16) set Type to Bug.
Joshua McMillan (Jmcm16) created this task.
Joshua McMillan (Jmcm16) raised the priority of this task from to Needs Triage by Developer.

This was indeed not known. Root of the issue goes to the fact that VAOs can not be shared across different contexts and in Blender we have per-window OpenGL context.

Not sure what would be right way to solve the issue here. In theory we can store some sort of <context, VAO> hash, but it runs out of control real quick. @Antony Riakiotakis (psy-fi), do you have any inputs here?

While going to a shared context for all windows will work to solve this particular problem, it'll have following downsides:

  • Performance of multiple window might become worse, especially when having several GPUs
  • Moving windows across monitors, connected to different GPUs will be quite impossible/instable

This issue needs some smarter approach, maybe with some VAOs storage or so. We'll have a look as an OpenGL viewport project. Considering it a TODO for now.