Drivers that use Meta are happily using blitting data using texelFetch and GL_SKIP_DECODE_EXT, but the GL_EXT_texture_sRGB spec unfortunately makes GL_SKIP_DECODE_EXT not necessarily work with texelFetch.
As a hack, just unset the texture_used_by_txf bitfield so we can continue with the old desired behavior. --- src/mesa/drivers/common/meta.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 73143842485..658a62885bd 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -87,6 +87,7 @@ #include "main/glformats.h" #include "util/bitscan.h" #include "util/ralloc.h" +#include "compiler/nir/nir.h" /** Return offset in bytes of the field within a vertex struct */ #define OFFSET(FIELD) ((void *) offsetof(struct vertex, FIELD)) @@ -195,6 +196,17 @@ _mesa_meta_compile_and_link_program(struct gl_context *ctx, _mesa_meta_link_program_with_debug(ctx, sh_prog); + struct gl_program *fp = + sh_prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->Program; + + /* texelFetch() can break GL_SKIP_DECODE_EXT, but many meta passes want + * to use both together; pretend that we're not using texelFetch to hack + * around this bad interaction. + */ + fp->info.textures_used_by_txf = 0; + if (fp->nir) + fp->nir->info.textures_used_by_txf = 0; + _mesa_meta_use_program(ctx, sh_prog); *out_sh_prog = sh_prog; -- 2.14.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev