nvc0/cl: hande 64 bit pointers in nvc0_set_global_handle

clover gives us a uint32_t pointer into the kernel input bufffer, but also
for actual 64 bit pointers, so we can just use memcpy instead.

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6433>
This commit is contained in:
Karol Herbst 2020-08-31 13:32:55 +02:00 committed by Marge Bot
parent 5eacaa95a7
commit 6e52c6dfcc

View file

@ -1357,14 +1357,9 @@ nvc0_set_global_handle(uint32_t *phandle, struct pipe_resource *res)
{
struct nv04_resource *buf = nv04_resource(res);
if (buf) {
uint64_t limit = (buf->address + buf->base.width0) - 1;
if (limit < (1ULL << 32)) {
*phandle = (uint32_t)buf->address;
} else {
NOUVEAU_ERR("Cannot map into TGSI_RESOURCE_GLOBAL: "
"resource not contained within 32-bit address space !\n");
*phandle = 0;
}
uint64_t address = buf->address + *phandle;
/* even though it's a pointer to uint32_t that's fine */
memcpy(phandle, &address, 8);
} else {
*phandle = 0;
}