Am 30.01.2018 um 09:21 schrieb Gert Wollny:
> Although gl_SampleMaskIn is declared as an array in GLSL, it is
> effectively a 32 bit mask on all hardware supported by mesa, so the
> array indexing is ignored (Thanks Glenn Kennard for the explanation).
> 
> Add a comment that the assert is not made superfluos by the else branch.
> 
> Corrects: piglit spec@arb_gpu_shader5@execution@samplemaskin-indirect for
> debug builds (it already passed in release).
> 
> Signed-off-by: Gert Wollny <gw.foss...@gmail.com>
> ---
> 
>  src/gallium/drivers/r600/sb/sb_bc_parser.cpp | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp 
> b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp
> index 970e4141d5..b92e058daf 100644
> --- a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp
> +++ b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp
> @@ -125,7 +125,9 @@ int bc_parser::parse_decls() {
>               return 0;
>       }
>  
> -     if (pshader->indirect_files & ~((1 << TGSI_FILE_CONSTANT) | (1 << 
> TGSI_FILE_SAMPLER))) {
> +     if (pshader->indirect_files &
> +         ~((1 << TGSI_FILE_CONSTANT) | (1 << TGSI_FILE_SAMPLER) |
> +          (1 << TGSI_FILE_SYSTEM_VALUE))) {
So I suppose this is ok because none of the other system values
could be arrays.
That said, isn't that actually a bug in glsl to tgsi translation? the
sample mask is never an array in gallium/tgsi (and not declared as
such), so I think it should not turn up as indirect when properly
translated, reading the value should not end up as indexed.

Roland


>               assert(pshader->num_arrays);
>  
> @@ -135,6 +137,10 @@ int bc_parser::parse_decls() {
>                               sh->add_gpr_array(a.gpr_start, a.gpr_count, 
> a.comp_mask);
>                       }
>               } else {
> +                     /* When the above assert is disabled and proper array 
> info
> +                      * is missing for some reason then, as a fallback, make 
> sure
> +                      * that all GPRs can be accessed indirectly.
> +                      */
>                       sh->add_gpr_array(0, pshader->bc.ngpr, 0x0F);
>               }
>       }
> 

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

Reply via email to