1. gl(Tex/Texture)Storage doesn’t work with any depth-format on AMD:
void Bug_AMD_TexStorage_Depth()
{
GLuint tex;
glGenTextures(1, &tex);
glTextureStorage2DEXT(tex, GL_TEXTURE_2D, 1, GL_DEPTH_COMPONENT24, 64, 64);
// BUG: err = GL_INVALID_OPERATION
GLenum err = glGetError();
}
2. gl(Tex/Texture)Storage doesn’t work with cubemaps on AMD:
void Bug_AMD_TexStorage_CubeMap()
{
GLuint tex;
glGenTextures(1, &tex);
glTextureStorage2DEXT(tex, GL_TEXTURE_CUBE_MAP, 1, GL_RGBA8, 64, 64);
// BUG: err = GL_INVALID_ENUM
GLenum err = glGetError();
}
3. gl(Tex/Texture)Storage will not work if PBO is active on AMD:
void Bug_AMD_TexStorage_PBO()
{
GLuint buffer;
glGenBuffers(1, &buffer);
glNamedBufferDataEXT(buffer, 1024, NULL, GL_STATIC_DRAW);
// NOTE: bug is here
// WORKAROUND: before TexStorage always do glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0)
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buffer);
GLuint tex;
glGenTextures(1, &tex);
glTextureStorage2DEXT(tex, GL_TEXTURE_2D, 1, GL_RGBA8, 64, 64);
// BUG: err = GL_INVALID_OPERATION
GLenum err = glGetError();
}
4. Calling glGenQueries between glBeginQuery/glEndQuery on AMD, leads to invalid operation:
void Bug_AMD_Query()
{
GLuint query1;
glGenQueries(1, &query1);
glBeginQuery(GL_SAMPLES_PASSED, query1);
GLuint query2;
glGenQueries(1, &query2);
// BUG: err = GL_INVALID_OPERATION
GLenum err = glGetError();
glEndQuery(GL_SAMPLES_PASSED);
}
5. textureGather<Offset>(samplerRECT…) is not work on NV:
any shader with this code will be compiled with this output:
target not supported by the TXG instruction
– internal assembly text –
// very long assemply here…
P.S. to be continued…