mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 23:00:11 +01:00
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: e168d148d7 ("gallivm/nir: handle non-uniform texture offsets")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10676>
This commit is contained in:
parent
cca9201922
commit
83a05caaf2
1 changed files with 4 additions and 2 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue