The following problems occur with the Intel HD 4600 Graphics driver for OpenGL
4.3.0 (build 10.18.15.4281) running on Microsoft Windows 10 (10.0.10586).
- For some of the shaders in the sample applications, the function
glGetProgramResourceiv for GL_SHADER_STORAGE_BLOCK with the properties
GL_REFERENCED_BY_*_SHADER (* one of VERTEX, GEOMETRY, FRAGMENT, COMPUTE)
returns results of 0, indicating that the shader storage block is not
referenced by the shader; however, these blocks are referenced. Our
OpenGL graphics engine asserts during the setup for shader execution,
claiming that when the CPU-side resource for the shader storage block is
specified as a shader input, the block does not exist in the shader. This
happened in the samples AppendConsumeBuffers, SurfaceExtraction, and
GenerateMeshUVs. We created a reproducible example for Intel and filed
a bug report. The GLSLReflection class was modified to use a work-around
that manually verifies whether or not the shader storage blocks are indeed
In the DistanceSegment3 sample, the DistanceSeg3Seg3.glsl compute shader does
not work correctly; it appears that the shader code is not being compiled
correctly. The compute shader works correctly with NVIDIA and AMD OpenGL
drivers. We created a reproducible example for Intel and filed a bug report.
[2016 April 27: Intel reports the fix will be in the next driver release.]
In the CubeMaps sample, the OpenGLReportListener object in our engine generates
GL_INVALID_VALUE errors in glProgramUniform1i. The OpenGL description for
glProgramUniform1i does not appear to have GL_INVALID_VALUE as a possible
error code. These warnings only occur during the first draw call; they do
not occur on second or later calls. The application runs correctly, however.
In WireMesh, the GLSL link call generated an error about the type of
edgeDistance not matching between the geometry shader and the fragment shader.
The geometry shader tagged the output with noperspective so that the
rasterizer uses affine interpolation rather than perspective interpolation.
The fragment shader should not need this tag because the shader is called
for an already interpolated input. We added this tag to the fragment shader
and the error went away. This modification does not cause problems when running
with NVIDIA or AMD OpenGL drivers.