|
|
|
|
@ -253,6 +253,18 @@ namespace {
|
|
|
|
|
glVertexAttribIFormat() works or not. A test that triggers this issue is in |
|
|
|
|
MeshGLTest::addVertexBufferIntWithShort(). */ |
|
|
|
|
"intel-windows-broken-dsa-integer-vertex-attributes", |
|
|
|
|
|
|
|
|
|
/* When using more than just a vertex and fragment shader (geometry shader,
|
|
|
|
|
e.g.), ARB_explicit_uniform_location on Intel silently uses wrong |
|
|
|
|
locations, blowing up with either a non-descript |
|
|
|
|
Error has been generated. GL error GL_INVALID_OPERATION in ProgramUniformMatrix4fv: (ID: 2052228270) Generic error |
|
|
|
|
or, if you are lucky, a highly-cryptic-but-still-better-than-nothing |
|
|
|
|
Error has been generated. GL error GL_INVALID_OPERATION in ProgramUniform4fv: (ID: 1725519030) GL error GL_INVALID_OPERATION: mismatched type setting uniform of location "3" in program 1, "" using shaders, 2, "", 3, "", 8, "" |
|
|
|
|
*unless* you have vertex uniform locations first, fragment locations second |
|
|
|
|
and geometry locations last. Not sure about the other stages. Note that this |
|
|
|
|
workaround doesn't actually do anything, it's just printed as a heads-up |
|
|
|
|
for the sleepless nights debugging issues that happen only on Intel. */ |
|
|
|
|
"intel-windows-explicit-uniform-location-is-less-explicit-than-you-hoped", |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifndef MAGNUM_TARGET_GLES |
|
|
|
|
@ -396,16 +408,22 @@ void Context::setupDriverWorkarounds() {
|
|
|
|
|
_extensionRequiredVersion[Extensions::extension::Index] = Version::version |
|
|
|
|
|
|
|
|
|
#ifndef MAGNUM_TARGET_GLES |
|
|
|
|
#ifdef CORRADE_TARGET_WINDOWS |
|
|
|
|
if((detectedDriver() & DetectedDriver::IntelWindows) && !isExtensionSupported<Extensions::ARB::shading_language_420pack>() && !isDriverWorkaroundDisabled("intel-windows-glsl-exposes-unsupported-shading-language-420pack")) |
|
|
|
|
_setRequiredVersion(ARB::shading_language_420pack, None); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if(!isDriverWorkaroundDisabled("no-layout-qualifiers-on-old-glsl")) { |
|
|
|
|
_setRequiredVersion(ARB::explicit_attrib_location, GL320); |
|
|
|
|
_setRequiredVersion(ARB::explicit_uniform_location, GL320); |
|
|
|
|
_setRequiredVersion(ARB::shading_language_420pack, GL320); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef CORRADE_TARGET_WINDOWS |
|
|
|
|
if((detectedDriver() & DetectedDriver::IntelWindows) && !isExtensionSupported<Extensions::ARB::shading_language_420pack>() && !isDriverWorkaroundDisabled("intel-windows-glsl-exposes-unsupported-shading-language-420pack")) |
|
|
|
|
_setRequiredVersion(ARB::shading_language_420pack, None); |
|
|
|
|
|
|
|
|
|
if((detectedDriver() & DetectedDriver::IntelWindows) && isExtensionSupported<Extensions::ARB::explicit_uniform_location>() && !isDriverWorkaroundDisabled("intel-windows-explicit-uniform-location-is-less-explicit-than-you-hoped")) { |
|
|
|
|
/* Just to have it printed in the log. Ideal would be to have this
|
|
|
|
|
covered with a minimal repro case but I have better things to do |
|
|
|
|
in my life. */ |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifndef MAGNUM_TARGET_GLES |
|
|
|
|
|