mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-25 02:40:46 +02:00
nvk: Fix local memory loads in Kepler shader header
Kepler cards shader header needs the load/store flag enabled even for local memory usage. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35151>
This commit is contained in:
parent
a427f540e5
commit
4942a29314
2 changed files with 9 additions and 2 deletions
|
|
@ -7732,6 +7732,11 @@ pub trait ShaderModel {
|
|||
self.sm() >= 32 && self.sm() < 40
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn is_kepler(&self) -> bool {
|
||||
self.is_kepler_a() || self.is_kepler_b()
|
||||
}
|
||||
|
||||
// The following helpers are pulled from GetSpaVersion in the open-source
|
||||
// NVIDIA kernel driver sources
|
||||
|
||||
|
|
|
|||
|
|
@ -473,12 +473,14 @@ pub fn encode_header(
|
|||
let mut sph =
|
||||
ShaderProgramHeader::new(ShaderType::from(&shader_info.stage), sm.sm());
|
||||
|
||||
let slm_size = shader_info.slm_size.next_multiple_of(16);
|
||||
sph.set_sass_version(1);
|
||||
sph.set_does_load_or_store(shader_info.uses_global_mem);
|
||||
sph.set_does_load_or_store(
|
||||
shader_info.uses_global_mem || (sm.is_kepler() && slm_size > 0),
|
||||
);
|
||||
sph.set_does_global_store(shader_info.writes_global_mem);
|
||||
sph.set_does_fp64(shader_info.uses_fp64);
|
||||
|
||||
let slm_size = shader_info.slm_size.next_multiple_of(16);
|
||||
sph.set_shader_local_memory_size(slm_size.into());
|
||||
let crs_size = sm.crs_size(shader_info.max_crs_depth);
|
||||
sph.set_shader_local_memory_crs_size(crs_size);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue