swr: Align query results allocation

Some query results struct contents are declared as cache line aligned.
Use aligned malloc, and align the whole struct, to be safe.

Fixes crash when compiling with clang.

CC: <mesa-stable@lists.freedesktop.org>

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
George Kyriazis 2017-01-18 17:09:08 -06:00 committed by Tim Rowley
parent b829206b07
commit 00847e4f14
2 changed files with 5 additions and 4 deletions

View File

@ -29,7 +29,7 @@
#include "swr_query.h"
#include "swr_screen.h"
#include "swr_state.h"
#include "common/os.h"
static struct swr_query *
swr_query(struct pipe_query *p)
@ -45,7 +45,8 @@ swr_create_query(struct pipe_context *pipe, unsigned type, unsigned index)
assert(type < PIPE_QUERY_TYPES);
assert(index < MAX_SO_STREAMS);
pq = CALLOC_STRUCT(swr_query);
pq = (struct swr_query *) AlignedMalloc(sizeof(struct swr_query), 64);
memset(pq, 0, sizeof(*pq));
if (pq) {
pq->type = type;
@ -67,7 +68,7 @@ swr_destroy_query(struct pipe_context *pipe, struct pipe_query *q)
swr_fence_reference(pipe->screen, &pq->fence, NULL);
}
FREE(pq);
AlignedFree(pq);
}

View File

@ -34,7 +34,7 @@ struct swr_query_result {
uint64_t timestamp_end;
};
struct swr_query {
OSALIGNLINE(struct) swr_query {
unsigned type; /* PIPE_QUERY_* */
unsigned index;