glamor: Make context current in glamor_pixmap_fbo_cache_put

Without this, we may be manipulating the context of another screen.

In a system with two GPUs using glamor, this fixes lots of

(EE) glamor256: GL error: GL_INVALID_OPERATION in glBindTexture(non-gen name)

spew since 0b4c0c75 ('glamor: Replace "finish access" shader with texture
swizzling').

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Michel Dänzer 2016-03-11 12:21:06 +09:00 committed by Adam Jackson
parent ef3005da3d
commit 316948734c

View File

@ -174,6 +174,7 @@ glamor_pixmap_fbo_cache_put(glamor_screen_private *glamor_priv,
* glamor_picture.c. Don't reset GL_RED -> GL_ALPHA swizzle, though
*/
if (glamor_priv->has_texture_swizzle && n_format != 2) {
glamor_make_current(glamor_priv);
glBindTexture(GL_TEXTURE_2D, fbo->tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_RED);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, GL_GREEN);