Mesa (staging/21.1): gallivm: handle texture arrays in non-fragment shaders with lod.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue May 11 20:51:07 UTC 2021
Module: Mesa
Branch: staging/21.1
Commit: fedd681b74baf806cadcf976e90495cfd6b6c550
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fedd681b74baf806cadcf976e90495cfd6b6c550
Author: Dave Airlie <airlied at redhat.com>
Date: Fri May 7 11:26:35 2021 +1000
gallivm: handle texture arrays in non-fragment shaders with lod.
We have to unwind the lod into the scalar path correctly.
Fixes a crash with renderdoc demo
Fixes: e168d148d76d ("gallivm/nir: handle non-uniform texture offsets")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10676>
(cherry picked from commit 83a05caaf2ce4fa9d6605eddd5658bf400f642fb)
---
.pick_status.json | 2 +-
src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c | 6 ++++--
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/.pick_status.json b/.pick_status.json
index 6a39f1b8b03..5003624615d 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -1300,7 +1300,7 @@
"description": "gallivm: handle texture arrays in non-fragment shaders with lod.",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"master_sha": null,
"because_sha": "e168d148d76d780eda6f9aaa6c66608c4df3096c"
},
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
index 6a390ecbc55..05e52083b6f 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
@@ -1421,10 +1421,10 @@ static void emit_tex(struct lp_build_nir_context *bld_base,
LLVMGetUndef(bld_base->base.vec_type),
LLVMGetUndef(bld_base->base.vec_type),
LLVMGetUndef(bld_base->base.vec_type) };
- LLVMValueRef texel[4], orig_offset;
+ LLVMValueRef texel[4], orig_offset, orig_lod;
unsigned i;
orig_texel_ptr = params->texel;
-
+ orig_lod = params->lod;
for (i = 0; i < 5; i++) {
coords[i] = params->coords[i];
}
@@ -1443,6 +1443,8 @@ static void emit_tex(struct lp_build_nir_context *bld_base,
idx, "");
params->type = lp_elem_type(bld_base->base.type);
+ if (orig_lod)
+ params->lod = LLVMBuildExtractElement(gallivm->builder, orig_lod, idx, "");
params->texel = texel;
bld->sampler->emit_tex_sample(bld->sampler,
gallivm,
More information about the mesa-commit
mailing list