diff --git a/src/nouveau/vulkan/nvkmd/nouveau/nvkmd_nouveau_mem.c b/src/nouveau/vulkan/nvkmd/nouveau/nvkmd_nouveau_mem.c index e17600ce70e..3046da1d560 100644 --- a/src/nouveau/vulkan/nvkmd/nouveau/nvkmd_nouveau_mem.c +++ b/src/nouveau/vulkan/nvkmd/nouveau/nvkmd_nouveau_mem.c @@ -28,10 +28,11 @@ create_mem_or_close_bo(struct nvkmd_nouveau_dev *dev, enum nvkmd_mem_flags mem_flags, struct nouveau_ws_bo *bo, enum nvkmd_va_flags va_flags, - uint8_t pte_kind, uint64_t va_align_B, + uint64_t va_align_B, struct nvkmd_mem **mem_out) { const uint64_t size_B = bo->size; + const uint8_t pte_kind = bo->pte_kind; VkResult result; struct nvkmd_nouveau_mem *mem = CALLOC_STRUCT(nvkmd_nouveau_mem); @@ -162,8 +163,7 @@ nvkmd_nouveau_alloc_tiled_mem(struct nvkmd_dev *_dev, va_flags |= NVKMD_VA_GART; return create_mem_or_close_bo(dev, log_obj, flags, bo, - va_flags, pte_kind, va_align_B, - mem_out); + va_flags, va_align_B, mem_out); } VkResult @@ -197,7 +197,6 @@ nvkmd_nouveau_import_dma_buf(struct nvkmd_dev *_dev, return create_mem_or_close_bo(dev, log_obj, flags, bo, 0 /* va_flags */, - 0 /* pte_kind */, 0 /* va_align_B */, mem_out); } diff --git a/src/nouveau/winsys/nouveau_bo.c b/src/nouveau/winsys/nouveau_bo.c index aa3318cf33d..2859b751071 100644 --- a/src/nouveau/winsys/nouveau_bo.c +++ b/src/nouveau/winsys/nouveau_bo.c @@ -134,6 +134,7 @@ nouveau_ws_bo_new_tiled_locked(struct nouveau_ws_device *dev, bo->dev = dev; bo->flags = flags; bo->refcnt = 1; + bo->pte_kind = pte_kind; _mesa_hash_table_insert(dev->bos, (void *)(uintptr_t)bo->handle, bo); @@ -210,6 +211,7 @@ nouveau_ws_bo_from_dma_buf_locked(struct nouveau_ws_device *dev, int fd) bo->dev = dev; bo->flags = flags; bo->refcnt = 1; + bo->pte_kind = (info.tile_flags & 0x0000ff00) >> 8; _mesa_hash_table_insert(dev->bos, (void *)(uintptr_t)handle, bo); diff --git a/src/nouveau/winsys/nouveau_bo.h b/src/nouveau/winsys/nouveau_bo.h index d5d7de349e3..cbc674b172b 100644 --- a/src/nouveau/winsys/nouveau_bo.h +++ b/src/nouveau/winsys/nouveau_bo.h @@ -40,6 +40,7 @@ struct nouveau_ws_bo { uint32_t handle; enum nouveau_ws_bo_flags flags; atomic_uint_fast32_t refcnt; + uint8_t pte_kind; }; void nouveau_ws_bo_bind_vma(struct nouveau_ws_device *dev,