summaryrefslogtreecommitdiff
path: root/glamor
diff options
context:
space:
mode:
Diffstat (limited to 'glamor')
-rw-r--r--glamor/glamor.c2
-rw-r--r--glamor/glamor_copy.c3
-rw-r--r--glamor/glamor_priv.h1
3 files changed, 6 insertions, 0 deletions
diff --git a/glamor/glamor.c b/glamor/glamor.c
index 45cc0952e..7b3953660 100644
--- a/glamor/glamor.c
+++ b/glamor/glamor.c
@@ -616,6 +616,8 @@ glamor_init(ScreenPtr screen, unsigned int flags)
glamor_priv->is_core_profile =
gl_version >= 31 && !epoxy_has_gl_extension("GL_ARB_compatibility");
+ glamor_priv->can_copyplane = (gl_version >= 30);
+
glamor_setup_debug_output(screen);
glamor_priv->use_quads = (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) &&
diff --git a/glamor/glamor_copy.c b/glamor/glamor_copy.c
index 5b5f0e6b9..8a329d2f8 100644
--- a/glamor/glamor_copy.c
+++ b/glamor/glamor_copy.c
@@ -351,6 +351,9 @@ glamor_copy_fbo_fbo_draw(DrawablePtr src,
if (!glamor_set_alu(screen, gc ? gc->alu : GXcopy))
goto bail_ctx;
+ if (bitplane && !glamor_priv->can_copyplane)
+ goto bail_ctx;
+
if (bitplane) {
prog = &glamor_priv->copy_plane_prog;
copy_facet = &glamor_facet_copyplane;
diff --git a/glamor/glamor_priv.h b/glamor/glamor_priv.h
index 2e491a689..27f95521d 100644
--- a/glamor/glamor_priv.h
+++ b/glamor/glamor_priv.h
@@ -201,6 +201,7 @@ typedef struct glamor_screen_private {
Bool has_dual_blend;
Bool has_texture_swizzle;
Bool is_core_profile;
+ Bool can_copyplane;
int max_fbo_size;
GLuint one_channel_format;