llvmpipe: add support for indirect texture access.
This hooks up the sampler switch statement generator to the llvmpipe sampler interface. Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3778>
This commit is contained in:
parent
6dc904f600
commit
52a050ea0a
|
@ -360,10 +360,27 @@ lp_llvm_sampler_soa_emit_fetch_texel(const struct lp_build_sampler_soa *base,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lp_build_sample_soa(&sampler->dynamic_state.static_state[texture_index].texture_state,
|
if (params->texture_index_offset) {
|
||||||
&sampler->dynamic_state.static_state[sampler_index].sampler_state,
|
struct lp_build_sample_array_switch switch_info;
|
||||||
&sampler->dynamic_state.base,
|
memset(&switch_info, 0, sizeof(switch_info));
|
||||||
gallivm, params);
|
LLVMValueRef unit = LLVMBuildAdd(gallivm->builder, params->texture_index_offset,
|
||||||
|
lp_build_const_int32(gallivm, texture_index), "");
|
||||||
|
lp_build_sample_array_init_soa(&switch_info, gallivm, params, unit,
|
||||||
|
0, sampler->nr_samplers);
|
||||||
|
|
||||||
|
for (unsigned i = 0; i < sampler->nr_samplers; i++) {
|
||||||
|
lp_build_sample_array_case_soa(&switch_info, i,
|
||||||
|
&sampler->dynamic_state.static_state[i].texture_state,
|
||||||
|
&sampler->dynamic_state.static_state[i].sampler_state,
|
||||||
|
&sampler->dynamic_state.base);
|
||||||
|
}
|
||||||
|
lp_build_sample_array_fini_soa(&switch_info);
|
||||||
|
} else {
|
||||||
|
lp_build_sample_soa(&sampler->dynamic_state.static_state[texture_index].texture_state,
|
||||||
|
&sampler->dynamic_state.static_state[sampler_index].sampler_state,
|
||||||
|
&sampler->dynamic_state.base,
|
||||||
|
gallivm, params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue