[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