You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
These tests write to the same attachment in succession and checks that the write happens after fragment execution. However, Metal, for depth attachment under certain conditions (that are met by the test) writes the value before fragment execution which leads to failing the tests.
Solution is to enforce the depth write to post fragment execution. The way I found to accomplish this is by adding a pass through write of the depth value. Equivalent of the following GLSL code in Metal: gl_FragDepth = gl_FragCoord.z;
I couldn't find anything in the Metal specification about graphic pipeline's stage execution order nor synchronization dependencies between them, but I'm inclined to think that the failure of these tests imply there may be an oversight on Metal drivers.
In the short term, I believe implementing the enforced depth write will fix the issue for now, but we may find ourselves in the future having to find a different workaround, or if we are lucky Metal fixes this issue.
The text was updated successfully, but these errors were encountered:
Failing CTS tests:
These tests write to the same attachment in succession and checks that the write happens after fragment execution. However, Metal, for depth attachment under certain conditions (that are met by the test) writes the value before fragment execution which leads to failing the tests.
Solution is to enforce the depth write to post fragment execution. The way I found to accomplish this is by adding a pass through write of the depth value. Equivalent of the following GLSL code in Metal:
gl_FragDepth = gl_FragCoord.z;
I couldn't find anything in the Metal specification about graphic pipeline's stage execution order nor synchronization dependencies between them, but I'm inclined to think that the failure of these tests imply there may be an oversight on Metal drivers.
For Vulkan spec text on the issue, please refer to https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/5087
In the short term, I believe implementing the enforced depth write will fix the issue for now, but we may find ourselves in the future having to find a different workaround, or if we are lucky Metal fixes this issue.
The text was updated successfully, but these errors were encountered: