Garbage output in Viewport with OpenSubdiv device set to GLSL Compute #45909

Closed
opened 2015-08-26 08:46:16 +02:00 by Anshu Arya · 6 comments

Using OpenSubdiv on an AMD A10-6800K and A10-7850K on Win8.1 or Win10 with OpenSubdiv and compute device GLSL Compute results in garbage output for Dragon blend example. Also results in random artifacts with other scenes. Other compute devices for OpenSubdiv do not show errors.

Example output of "GLSL Transform Feedback" device:
GLSLTransformFeedback.png

Example output of "GLSL Compute" device:
GLSLCompute.png

SystemInfo for A10-6800K: systeminfo.txt

Using OpenSubdiv on an AMD A10-6800K and A10-7850K on Win8.1 or Win10 with OpenSubdiv and compute device GLSL Compute results in garbage output for Dragon blend example. Also results in random artifacts with other scenes. Other compute devices for OpenSubdiv do not show errors. Example output of "GLSL Transform Feedback" device: ![GLSLTransformFeedback.png](https://archive.blender.org/developer/F228065/GLSLTransformFeedback.png) Example output of "GLSL Compute" device: ![GLSLCompute.png](https://archive.blender.org/developer/F228063/GLSLCompute.png) SystemInfo for A10-6800K: [systeminfo.txt](https://archive.blender.org/developer/F228067/systeminfo.txt)
Author

Changed status to: 'Open'

Changed status to: 'Open'
Sergey Sharybin was assigned by Anshu Arya 2015-08-26 08:46:16 +02:00
Author

Added subscriber: @anshuarya

Added subscriber: @anshuarya

This issue was referenced by 6ca12d157f

This issue was referenced by 6ca12d157fbfdf1a71a06a87fb5f258ae98ebe02

Changed status from 'Open' to: 'Resolved'

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

Forwarding info from Qun Lin:
"It is an application issue. Application forgot to specify the block layout for all shader storage blocks in compute shader.
They assume the default layout is std430. But according to spec, the default layout is shared, which layout is dependent on driver’s implementation, and app should query each member’s offset if they want to use shared layout.
To fix this issue, application only needs to add following line at the beginning of the shader source code:
layout(std430) buffer;
Attached is modified compute shader, in case you need it. With these modified shaders, corruption disappears."

Links to compute shader code referenced above:
https://dl.dropboxusercontent.com/u/3047603/computeshader1.txt
https://dl.dropboxusercontent.com/u/3047603/computeshader2.txt

Forwarding info from Qun Lin: "It is an application issue. Application forgot to specify the block layout for all shader storage blocks in compute shader. They assume the default layout is std430. But according to spec, the default layout is shared, which layout is dependent on driver’s implementation, and app should query each member’s offset if they want to use shared layout. To fix this issue, application only needs to add following line at the beginning of the shader source code: layout(std430) buffer; Attached is modified compute shader, in case you need it. With these modified shaders, corruption disappears." Links to compute shader code referenced above: https://dl.dropboxusercontent.com/u/3047603/computeshader1.txt https://dl.dropboxusercontent.com/u/3047603/computeshader2.txt
Author

This has been solved by: https://github.com/PixarAnimationStudios/OpenSubdiv/pull/742

When Blender pulls in OpenSubdiv v3.0.3, corruption should be gone.

This has been solved by: https://github.com/PixarAnimationStudios/OpenSubdiv/pull/742 When Blender pulls in OpenSubdiv v3.0.3, corruption should be gone.
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: blender/blender#45909
No description provided.