mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 13:38:06 +02:00
nak: Add a nak_qmd_size_B() query
Also add a #define NAK_QMD_ALIGN_B for alignments. The alignment is
always 256B and there's no evidence of that changing.
Reviewed-by: Mel Henning <mhenning@darkrefraction.com>
Backport-to: 25.2
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36995>
(cherry picked from commit 02ef6a5158)
This commit is contained in:
parent
bb7baeae6c
commit
ec112a35e2
4 changed files with 29 additions and 1 deletions
|
|
@ -3954,7 +3954,7 @@
|
|||
"description": "nak: Add a nak_qmd_size_B() query",
|
||||
"nominated": true,
|
||||
"nomination_type": 4,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ _nak_bindings_rs = rust.bindgen(
|
|||
'--allowlist-type', 'nak_.*',
|
||||
'--allowlist-type', 'nouveau_ws_.*',
|
||||
'--allowlist-var', 'DRM_.*',
|
||||
'--allowlist-var', 'NAK_.*',
|
||||
'--allowlist-var', 'NVIDIA_VENDOR_ID',
|
||||
'--allowlist-function', 'drm.*',
|
||||
'--allowlist-function', 'nak_.*',
|
||||
|
|
|
|||
|
|
@ -251,6 +251,12 @@ struct nak_qmd_info {
|
|||
struct nak_qmd_cbuf cbufs[8];
|
||||
};
|
||||
|
||||
#define NAK_QMD_ALIGN_B 256
|
||||
#define NAK_MAX_QMD_SIZE_B 256
|
||||
#define NAK_MAX_QMD_DWORDS (NAK_MAX_QMD_SIZE_B / 4)
|
||||
|
||||
uint32_t nak_qmd_size_B(const struct nv_device_info *dev);
|
||||
|
||||
void nak_fill_qmd(const struct nv_device_info *dev,
|
||||
const struct nak_shader_info *info,
|
||||
const struct nak_qmd_info *qmd_info,
|
||||
|
|
|
|||
|
|
@ -580,6 +580,27 @@ fn fill_qmd<Q: QMD>(info: &nak_shader_info, qmd_info: &nak_qmd_info) -> Q {
|
|||
qmd
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn nak_qmd_size_B(dev: &nv_device_info) -> u32 {
|
||||
let size_B = if dev.cls_compute >= clcdc0::BLACKWELL_COMPUTE_A {
|
||||
size_of::<Qmd5_0>().try_into().unwrap()
|
||||
} else if dev.cls_compute >= clcbc0::HOPPER_COMPUTE_A {
|
||||
size_of::<Qmd4_0>().try_into().unwrap()
|
||||
} else if dev.cls_compute >= clc6c0::AMPERE_COMPUTE_A {
|
||||
size_of::<Qmd3_0>().try_into().unwrap()
|
||||
} else if dev.cls_compute >= clc3c0::VOLTA_COMPUTE_A {
|
||||
size_of::<Qmd2_2>().try_into().unwrap()
|
||||
} else if dev.cls_compute >= clc0c0::PASCAL_COMPUTE_A {
|
||||
size_of::<Qmd2_1>().try_into().unwrap()
|
||||
} else if dev.cls_compute >= cla0c0::KEPLER_COMPUTE_A {
|
||||
size_of::<Qmd0_6>().try_into().unwrap()
|
||||
} else {
|
||||
panic!("Unknown shader model");
|
||||
};
|
||||
assert!(size_B <= NAK_MAX_QMD_SIZE_B);
|
||||
size_B
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn nak_fill_qmd(
|
||||
dev: *const nv_device_info,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue