xref: /aosp_15_r20/external/mesa3d/src/nouveau/vulkan/nvk_device.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2022 Collabora Ltd. and Red Hat Inc.
3*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
4*61046927SAndroid Build Coastguard Worker  */
5*61046927SAndroid Build Coastguard Worker #ifndef NVK_DEVICE_H
6*61046927SAndroid Build Coastguard Worker #define NVK_DEVICE_H 1
7*61046927SAndroid Build Coastguard Worker 
8*61046927SAndroid Build Coastguard Worker #include "nvk_private.h"
9*61046927SAndroid Build Coastguard Worker 
10*61046927SAndroid Build Coastguard Worker #include "nvk_edb_bview_cache.h"
11*61046927SAndroid Build Coastguard Worker #include "nvk_descriptor_table.h"
12*61046927SAndroid Build Coastguard Worker #include "nvk_heap.h"
13*61046927SAndroid Build Coastguard Worker #include "nvk_queue.h"
14*61046927SAndroid Build Coastguard Worker #include "nvk_upload_queue.h"
15*61046927SAndroid Build Coastguard Worker #include "vk_device.h"
16*61046927SAndroid Build Coastguard Worker #include "vk_meta.h"
17*61046927SAndroid Build Coastguard Worker #include "vk_queue.h"
18*61046927SAndroid Build Coastguard Worker 
19*61046927SAndroid Build Coastguard Worker struct nvk_physical_device;
20*61046927SAndroid Build Coastguard Worker struct nvkmd_dev;
21*61046927SAndroid Build Coastguard Worker struct nvkmd_mem;
22*61046927SAndroid Build Coastguard Worker struct vk_pipeline_cache;
23*61046927SAndroid Build Coastguard Worker 
24*61046927SAndroid Build Coastguard Worker struct nvk_slm_area {
25*61046927SAndroid Build Coastguard Worker    simple_mtx_t mutex;
26*61046927SAndroid Build Coastguard Worker    struct nvkmd_mem *mem;
27*61046927SAndroid Build Coastguard Worker    uint32_t bytes_per_warp;
28*61046927SAndroid Build Coastguard Worker    uint32_t bytes_per_tpc;
29*61046927SAndroid Build Coastguard Worker };
30*61046927SAndroid Build Coastguard Worker 
31*61046927SAndroid Build Coastguard Worker struct nvkmd_mem *
32*61046927SAndroid Build Coastguard Worker nvk_slm_area_get_mem_ref(struct nvk_slm_area *area,
33*61046927SAndroid Build Coastguard Worker                          uint32_t *bytes_per_warp_out,
34*61046927SAndroid Build Coastguard Worker                          uint32_t *bytes_per_mp_out);
35*61046927SAndroid Build Coastguard Worker 
36*61046927SAndroid Build Coastguard Worker struct nvk_device {
37*61046927SAndroid Build Coastguard Worker    struct vk_device vk;
38*61046927SAndroid Build Coastguard Worker 
39*61046927SAndroid Build Coastguard Worker    struct nvkmd_dev *nvkmd;
40*61046927SAndroid Build Coastguard Worker 
41*61046927SAndroid Build Coastguard Worker    struct nvk_upload_queue upload;
42*61046927SAndroid Build Coastguard Worker 
43*61046927SAndroid Build Coastguard Worker    struct nvkmd_mem *zero_page;
44*61046927SAndroid Build Coastguard Worker    struct nvk_descriptor_table images;
45*61046927SAndroid Build Coastguard Worker    struct nvk_descriptor_table samplers;
46*61046927SAndroid Build Coastguard Worker    struct nvk_edb_bview_cache edb_bview_cache;
47*61046927SAndroid Build Coastguard Worker    struct nvk_heap shader_heap;
48*61046927SAndroid Build Coastguard Worker    struct nvk_heap event_heap;
49*61046927SAndroid Build Coastguard Worker    struct nvk_slm_area slm;
50*61046927SAndroid Build Coastguard Worker    struct nvkmd_mem *vab_memory;
51*61046927SAndroid Build Coastguard Worker 
52*61046927SAndroid Build Coastguard Worker    struct nvk_queue queue;
53*61046927SAndroid Build Coastguard Worker 
54*61046927SAndroid Build Coastguard Worker    struct vk_meta_device meta;
55*61046927SAndroid Build Coastguard Worker 
56*61046927SAndroid Build Coastguard Worker    struct nvk_shader *copy_queries;
57*61046927SAndroid Build Coastguard Worker };
58*61046927SAndroid Build Coastguard Worker 
59*61046927SAndroid Build Coastguard Worker VK_DEFINE_HANDLE_CASTS(nvk_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE)
60*61046927SAndroid Build Coastguard Worker 
61*61046927SAndroid Build Coastguard Worker VkResult nvk_device_ensure_slm(struct nvk_device *dev,
62*61046927SAndroid Build Coastguard Worker                                uint32_t slm_bytes_per_lane,
63*61046927SAndroid Build Coastguard Worker                                uint32_t crs_bytes_per_warp);
64*61046927SAndroid Build Coastguard Worker 
65*61046927SAndroid Build Coastguard Worker static inline struct nvk_physical_device *
nvk_device_physical(struct nvk_device * dev)66*61046927SAndroid Build Coastguard Worker nvk_device_physical(struct nvk_device *dev)
67*61046927SAndroid Build Coastguard Worker {
68*61046927SAndroid Build Coastguard Worker    return (struct nvk_physical_device *)dev->vk.physical;
69*61046927SAndroid Build Coastguard Worker }
70*61046927SAndroid Build Coastguard Worker 
71*61046927SAndroid Build Coastguard Worker VkResult nvk_device_init_meta(struct nvk_device *dev);
72*61046927SAndroid Build Coastguard Worker void nvk_device_finish_meta(struct nvk_device *dev);
73*61046927SAndroid Build Coastguard Worker 
74*61046927SAndroid Build Coastguard Worker #endif
75