diff --git a/plugins/linux-capture/xcompcap-main.cpp b/plugins/linux-capture/xcompcap-main.cpp index d3be357be..c99f1ec31 100644 --- a/plugins/linux-capture/xcompcap-main.cpp +++ b/plugins/linux-capture/xcompcap-main.cpp @@ -303,13 +303,17 @@ static void xcc_cleanup(XCompcapMain_private *p) static gs_color_format gs_format_from_tex() { GLint iformat = 0; - // we can probably fix the intel swapped texture by querying via - // GL_ARB_internalformat_query + // consider GL_ARB_internalformat_query glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &iformat); + + // These formats are known to be wrong on Intel platforms. We intentionally + // use swapped internal formats here to preserve historic behavior which + // swapped colors accidentally and because D3D11 would not support a + // GS_RGBX format switch (iformat) { case GL_RGB: - return GS_RGBX; + return GS_BGRX; case GL_RGBA: return GS_RGBA; default: