There is no forum dedicated to rendering APIs like Vulkan, so I'm posting here. An Intel GPU was having issues executing our GLSL shaders. I've attached a RenderDoc capture to demonstrate the problem. An environment-lit sphere has texture, as well as one that has directional light. A wireframe-like artifact can be seen on it. Looks like the shading is wrong on the triangle edges. This problem appears only on the expensive paths of the shader where there are many instructions to execute. Not on runs where there is no shadow mapping or no other texturing. The problem disappears when I lower the number of texture fetches. Also lowering the size of a constant array containing precomputed blue noise seemed to help. I don't think we do anything extraordinary in our shaders. Just the usual stuff - environment lighting, direct lighting, shadow mapping, normal mapping and so on. It is worth noting that we mainly run this on nVidias without any problems and we can't just simplify the code to run on Intel's. We need to preserve the quality of the shading.
This is a problem I don't know how to solve. When we exceed some SPIR-V size limit, where should I look? No information was provided by validation layers.
The pixel can be inspected to prove that it is not a bug in our code, for example, 195,81. It has a color value of 0.37,0.37,0.14. Pixel 195,82 is below it. There are incorrect values (darker than they should be) of 0.27,0.28,0.13. If I click the Debug button on this wrong pixel, the final outdoor register displays 0.368, 0.374, and 0.146. Therefore, the values are very close to the "right" ones. Where did the difference come from, I have no idea.
My driver version is 220.127.116.111 but it was the same also on a much older driver.
I would appreciate any advice you could provide,