From: Roland Scheidegger <[email protected]> When using (d3d10) conformant out-of-bound behavior for texel fetching (currently always enabled) the level still needs to be set to a safe value even though the offset in the end won't get used because the level is used to look up the mip offset itself and the actual strides, which might otherwise crash. For simplicity, we'll use level 0 in this case (this ought to be safe, llvmpipe does not actually fill in level 0 information if first_level is larger, but some random strides / offsets shouldn't hurt as ultimately we always use offset 0 in this case). Fixes a crash in some in-house test where random huge levels appear in lp_build_fetch_texel() despite the test always using a fixed 0 for level actually... But in any case the value comes from the shader and thus can easily be outside max mip level.
CC: <[email protected]> --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index aeecba8..f1bf285 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -927,6 +927,7 @@ lp_build_nearest_mip_level(struct lp_build_sample_context *bld, bld->int_coord_bld.type, out); } + level = lp_build_andnot(&bld->int_coord_bld, level, *out_of_bounds); *level_out = level; } else { -- 1.9.1 _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
