Jason Ekstrand <ja...@jlekstrand.net> writes:

> In certain conditions, we have to do bounds-checking in the shader for
> image_load_store.  The way this works for image loads is that we do the
> load anyway and then emit a series of slecects, one per component, that

Strictly speaking the load is predicated so it's not really done for out
of bounds coordinates, with that sentence clarified or removed (and the
typo fixed in "slecects") this patch is:

Reviewed-by: Francisco Jerez <curroje...@riseup.net>

> gives us 0 or the loaded value depending on whether or not you're in
> bounds.  However, we were hard-coding 4 components which may not be
> correct.  Instead, we should be using size which is the number of
> components read.
>
> Cc: Francisco Jerez <curroje...@riseup.net>

Although this is unlikely to fix any preexisting bugs (because the
result of the extra SELs would have been left unused and they would have
been dead-code-eliminated later on anyway), it shouldn't hurt to CC this
to mesa-stable too, if you like.

> ---
>  src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp 
> b/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp
> index 727e8d1..88f22fa 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp
> @@ -905,7 +905,7 @@ namespace brw {
>              tmp = emit_untyped_read(bld, image, laddr, 1, size, pred);
>  
>              /* An out of bounds surface access should give zero as result. */
> -            for (unsigned c = 0; c < 4; ++c)
> +            for (unsigned c = 0; c < size; ++c)
>                 set_predicate(pred, bld.SEL(offset(tmp, bld, c),
>                                             offset(tmp, bld, c), fs_reg(0)));
>           }
> -- 
> 2.5.0.400.gff86faf

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to