mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
nak/qmd: Add a nak_get_qmd_cbuf_desc_layout() helper
Fixes:976f22a5da("nvk: Implement CmdProcess/ExecuteGeneratedCommandsEXT") Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33771> (cherry picked from commitc540e5e2cc)
This commit is contained in:
parent
bac3b56d51
commit
95d0ecd6e5
3 changed files with 41 additions and 1 deletions
|
|
@ -334,7 +334,7 @@
|
|||
"description": "nak/qmd: Add a nak_get_qmd_cbuf_desc_layout() helper",
|
||||
"nominated": true,
|
||||
"nomination_type": 2,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "976f22a5da30c503b05e2873e4d265fb0d4ecb07",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -246,6 +246,14 @@ struct nak_qmd_dispatch_size_layout {
|
|||
struct nak_qmd_dispatch_size_layout
|
||||
nak_get_qmd_dispatch_size_layout(const struct nv_device_info *dev);
|
||||
|
||||
struct nak_qmd_cbuf_desc_layout {
|
||||
uint16_t addr_lo_start, addr_lo_end;
|
||||
uint16_t addr_hi_start, addr_hi_end;
|
||||
};
|
||||
|
||||
struct nak_qmd_cbuf_desc_layout
|
||||
nak_get_qmd_cbuf_desc_layout(const struct nv_device_info *dev, uint8_t idx);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ trait QMD {
|
|||
fn new() -> Self;
|
||||
fn set_barrier_count(&mut self, barrier_count: u8);
|
||||
fn set_cbuf(&mut self, idx: u8, addr: u64, size: u32);
|
||||
fn cbuf_desc_layout(idx: u8) -> nak_qmd_cbuf_desc_layout;
|
||||
fn set_global_size(&mut self, width: u32, height: u32, depth: u32);
|
||||
fn set_local_size(&mut self, width: u16, height: u16, depth: u16);
|
||||
fn set_prog_addr(&mut self, addr: u64);
|
||||
|
|
@ -135,6 +136,19 @@ macro_rules! qmd_impl_set_cbuf {
|
|||
|
||||
set_array!(bv, $c, $s, CONSTANT_BUFFER_VALID, idx, true);
|
||||
}
|
||||
|
||||
fn cbuf_desc_layout(idx: u8) -> nak_qmd_cbuf_desc_layout {
|
||||
let lo =
|
||||
paste! {$c::[<$s _CONSTANT_BUFFER_ADDR_LOWER>]}(idx.into());
|
||||
let hi =
|
||||
paste! {$c::[<$s _CONSTANT_BUFFER_ADDR_UPPER>]}(idx.into());
|
||||
nak_qmd_cbuf_desc_layout {
|
||||
addr_lo_start: lo.start as u16,
|
||||
addr_lo_end: lo.end as u16,
|
||||
addr_hi_start: hi.start as u16,
|
||||
addr_hi_end: hi.end as u16,
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -436,3 +450,21 @@ pub extern "C" fn nak_get_qmd_dispatch_size_layout(
|
|||
panic!("Unsupported shader model");
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn nak_get_qmd_cbuf_desc_layout(
|
||||
dev: &nv_device_info,
|
||||
idx: u8,
|
||||
) -> nak_qmd_cbuf_desc_layout {
|
||||
if dev.cls_compute >= clc6c0::AMPERE_COMPUTE_A {
|
||||
Qmd3_0::cbuf_desc_layout(idx.into())
|
||||
} else if dev.cls_compute >= clc3c0::VOLTA_COMPUTE_A {
|
||||
Qmd2_2::cbuf_desc_layout(idx.into())
|
||||
} else if dev.cls_compute >= clc0c0::PASCAL_COMPUTE_A {
|
||||
Qmd2_1::cbuf_desc_layout(idx.into())
|
||||
} else if dev.cls_compute >= cla0c0::KEPLER_COMPUTE_A {
|
||||
Qmd0_6::cbuf_desc_layout(idx.into())
|
||||
} else {
|
||||
panic!("Unsupported shader model");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue