Malheureusement tu es à la merci de l'union de toutes les merdes que l'ensemble (drivers x cartes) ont eu un jour

Maintenant pour essayer de t'aider dans la Patastrophe : mon expérience avec texture2DLod est que ca peut faire gagner en compat de l'éviter.
- cas n°1, ta passe utilise le niveau N partout:
Tu peux forcer le LOD côté texture avec GL_TEXTURE_BASE_LEVEL et GL_TEXTURE_MAX_LEVEL
Tu peux forcer le LOG
côté sampler avec GL_TEXTURE_MIN_LOD et GL_TEXTURE_MAX_LOD.
En OpenGL avant le sampler objects c'est pas séparé mais ça existe bel et bien dans les drivers

(Si tu sette un de ces paramètres, essaie de vérifier derrière qu'il est bien setté en gettant la valeur.)
L'une des deux manières est plus compatible, je sais plus laquelle

et ca fait pas la meme chose.
- cas n°2, ta passe a vraiment besoin de sampler n'importe quel LOD :
Le LOD samplé par glTexture tout court est obtenable avec fwidth(coordonnée de textures).
A partir de là, tu te sers du bias avec un truc comme texture2D(coord, -log2(fwidth(coord))) pour avoir le level 0. (est-ce que ca marche ce truc ?)- cas n°3, si c'est pour un post-process qui sample un buffer réduit 2^N fois, alors que tu parcoure un buffer fullscreen
Eh ben tu sais que texture2D va sampler le niveau -N, tu rajoute ce qu'il faut en bias.
Ca je suis sur que ça marche mais bon faut que ça s'applique dans ton cas.
(EDIT: du coup si c'est texture dependent read rien de tout ça ne marche)