[Mesa-dev] [PATCH 2/2] llvmpipe: Ensure the packed input of the lp_test_format is aligned.

Roland Scheidegger sroland at vmware.com
Fri Oct 24 13:20:48 PDT 2014


For the series:
Reviewed-by: Roland Scheidegger <sroland at vmware.com>

Am 24.10.2014 um 21:34 schrieb jfonseca at vmware.com:
> From: José Fonseca <jfonseca at vmware.com>
> 
> https://bugs.freedesktop.org/show_bug.cgi?id=85377
> http://llvm.org/bugs/show_bug.cgi?id=21365
> ---
>  src/gallium/drivers/llvmpipe/lp_test_format.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/drivers/llvmpipe/lp_test_format.c b/src/gallium/drivers/llvmpipe/lp_test_format.c
> index a4b3b56..48bf06e 100644
> --- a/src/gallium/drivers/llvmpipe/lp_test_format.c
> +++ b/src/gallium/drivers/llvmpipe/lp_test_format.c
> @@ -133,6 +133,7 @@ test_format_float(unsigned verbose, FILE *fp,
>     struct gallivm_state *gallivm;
>     LLVMValueRef fetch = NULL;
>     fetch_ptr_t fetch_ptr;
> +   PIPE_ALIGN_VAR(16) uint8_t packed[UTIL_FORMAT_MAX_PACKED_BYTES];
>     PIPE_ALIGN_VAR(16) float unpacked[4];
>     boolean first = TRUE;
>     boolean success = TRUE;
> @@ -160,13 +161,16 @@ test_format_float(unsigned verbose, FILE *fp,
>              first = FALSE;
>           }
>  
> +         /* To ensure it's 16-byte aligned */
> +         memcpy(packed, test->packed, sizeof packed);
> +
>           for (i = 0; i < desc->block.height; ++i) {
>              for (j = 0; j < desc->block.width; ++j) {
>                 boolean match = TRUE;
>  
>                 memset(unpacked, 0, sizeof unpacked);
>  
> -               fetch_ptr(unpacked, test->packed, j, i);
> +               fetch_ptr(unpacked, packed, j, i);
>  
>                 for(k = 0; k < 4; ++k) {
>                    if (util_double_inf_sign(test->unpacked[i][j][k]) != util_inf_sign(unpacked[k])) {
> @@ -220,6 +224,7 @@ test_format_unorm8(unsigned verbose, FILE *fp,
>     struct gallivm_state *gallivm;
>     LLVMValueRef fetch = NULL;
>     fetch_ptr_t fetch_ptr;
> +   PIPE_ALIGN_VAR(16) uint8_t packed[UTIL_FORMAT_MAX_PACKED_BYTES];
>     uint8_t unpacked[4];
>     boolean first = TRUE;
>     boolean success = TRUE;
> @@ -246,13 +251,16 @@ test_format_unorm8(unsigned verbose, FILE *fp,
>              first = FALSE;
>           }
>  
> +         /* To ensure it's 16-byte aligned */
> +         memcpy(packed, test->packed, sizeof packed);
> +
>           for (i = 0; i < desc->block.height; ++i) {
>              for (j = 0; j < desc->block.width; ++j) {
>                 boolean match;
>  
>                 memset(unpacked, 0, sizeof unpacked);
>  
> -               fetch_ptr(unpacked, test->packed, j, i);
> +               fetch_ptr(unpacked, packed, j, i);
>  
>                 match = TRUE;
>                 for(k = 0; k < 4; ++k) {
> 



More information about the mesa-dev mailing list