diff options
-rw-r--r-- | src/mesa/drivers/common/meta.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 73143842485..bae04bea516 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,18 @@ _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. This is a bit fragile as it may break + * if you re-run the pass that gathers this info, but we probably won't... + */ + 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; |