mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 16:48:07 +02:00
nvk: Use nvkmd_mem for the nvk_queue_state::push
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033>
This commit is contained in:
parent
d0593bb86c
commit
92ac7db7c8
3 changed files with 19 additions and 26 deletions
|
|
@ -37,10 +37,8 @@ nvk_queue_state_finish(struct nvk_device *dev,
|
|||
nvkmd_mem_unref(qs->samplers.mem);
|
||||
if (qs->slm.mem)
|
||||
nvkmd_mem_unref(qs->slm.mem);
|
||||
if (qs->push.bo) {
|
||||
nouveau_ws_bo_unmap(qs->push.bo, qs->push.bo_map);
|
||||
nouveau_ws_bo_destroy(qs->push.bo);
|
||||
}
|
||||
if (qs->push.mem)
|
||||
nvkmd_mem_unref(qs->push.mem);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -50,8 +48,8 @@ nvk_queue_state_dump_push(struct nvk_device *dev,
|
|||
struct nvk_physical_device *pdev = nvk_device_physical(dev);
|
||||
|
||||
struct nv_push push = {
|
||||
.start = (uint32_t *)qs->push.bo_map,
|
||||
.end = (uint32_t *)qs->push.bo_map + qs->push.dw_count,
|
||||
.start = (uint32_t *)qs->push.mem->map,
|
||||
.end = (uint32_t *)qs->push.mem->map + qs->push.dw_count,
|
||||
};
|
||||
vk_push_print(fp, &push, &pdev->info);
|
||||
}
|
||||
|
|
@ -116,18 +114,17 @@ nvk_queue_state_update(struct nvk_device *dev,
|
|||
if (!dirty)
|
||||
return VK_SUCCESS;
|
||||
|
||||
struct nouveau_ws_bo *push_bo;
|
||||
void *push_map;
|
||||
push_bo = nouveau_ws_bo_new_mapped(dev->ws_dev, 256 * 4, 0,
|
||||
NOUVEAU_WS_BO_GART |
|
||||
NOUVEAU_WS_BO_MAP |
|
||||
NOUVEAU_WS_BO_NO_SHARE,
|
||||
NOUVEAU_WS_BO_WR, &push_map);
|
||||
if (push_bo == NULL)
|
||||
return vk_error(dev, VK_ERROR_OUT_OF_DEVICE_MEMORY);
|
||||
struct nvkmd_mem *push_mem;
|
||||
VkResult result = nvkmd_dev_alloc_mapped_mem(dev->nvkmd, &dev->vk.base,
|
||||
256 * 4, 0,
|
||||
NVKMD_MEM_GART |
|
||||
NVKMD_MEM_NO_SHARE,
|
||||
NVKMD_MEM_MAP_WR, &push_mem);
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
struct nv_push push;
|
||||
nv_push_init(&push, push_map, 256);
|
||||
nv_push_init(&push, push_mem->map, 256);
|
||||
struct nv_push *p = &push;
|
||||
|
||||
if (qs->images.mem) {
|
||||
|
|
@ -236,13 +233,10 @@ nvk_queue_state_update(struct nvk_device *dev,
|
|||
*/
|
||||
P_IMMD(p, NV9097, SET_SHADER_LOCAL_MEMORY_WINDOW, 0xff << 24);
|
||||
|
||||
if (qs->push.bo) {
|
||||
nouveau_ws_bo_unmap(qs->push.bo, qs->push.bo_map);
|
||||
nouveau_ws_bo_destroy(qs->push.bo);
|
||||
}
|
||||
if (qs->push.mem)
|
||||
nvkmd_mem_unref(qs->push.mem);
|
||||
|
||||
qs->push.bo = push_bo;
|
||||
qs->push.bo_map = push_map;
|
||||
qs->push.mem = push_mem;
|
||||
qs->push.dw_count = nv_push_dw_count(&push);
|
||||
|
||||
return VK_SUCCESS;
|
||||
|
|
|
|||
|
|
@ -34,8 +34,7 @@ struct nvk_queue_state {
|
|||
} slm;
|
||||
|
||||
struct {
|
||||
struct nouveau_ws_bo *bo;
|
||||
void *bo_map;
|
||||
struct nvkmd_mem *mem;
|
||||
uint32_t dw_count;
|
||||
} push;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -590,8 +590,8 @@ nvk_queue_submit_simple_drm_nouveau(struct nvk_queue *queue,
|
|||
static void
|
||||
push_add_queue_state(struct push_builder *pb, struct nvk_queue_state *qs)
|
||||
{
|
||||
if (qs->push.bo)
|
||||
push_add_push(pb, qs->push.bo->offset, qs->push.dw_count * 4, false);
|
||||
if (qs->push.mem)
|
||||
push_add_push(pb, qs->push.mem->va->addr, qs->push.dw_count * 4, false);
|
||||
}
|
||||
|
||||
VkResult
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue