Module: Mesa Branch: main Commit: a4f47ba52ca1d7d9972868fa5f38f9dcb404fa56 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a4f47ba52ca1d7d9972868fa5f38f9dcb404fa56
Author: Karol Herbst <kher...@redhat.com> Date: Sun Oct 29 08:53:50 2023 +0100 rusticl: specify buffer bindings explicitly Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25946> --- src/gallium/frontends/rusticl/core/context.rs | 14 +++++++++----- src/gallium/frontends/rusticl/core/kernel.rs | 6 +++++- src/gallium/frontends/rusticl/core/memory.rs | 2 +- src/gallium/frontends/rusticl/core/program.rs | 3 ++- src/gallium/frontends/rusticl/mesa/pipe/screen.rs | 6 ++++-- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/gallium/frontends/rusticl/core/context.rs b/src/gallium/frontends/rusticl/core/context.rs index 15593ebcdd8..2ca4c7b1e49 100644 --- a/src/gallium/frontends/rusticl/core/context.rs +++ b/src/gallium/frontends/rusticl/core/context.rs @@ -9,7 +9,7 @@ use crate::impl_cl_type_trait; use mesa_rust::pipe::resource::*; use mesa_rust::pipe::screen::ResourceType; -use mesa_rust_gen::pipe_format; +use mesa_rust_gen::*; use mesa_rust_util::properties::Properties; use rusticl_opencl_gen::*; @@ -62,13 +62,17 @@ impl Context { let mut resource = None; if !user_ptr.is_null() && !copy { - resource = dev - .screen() - .resource_create_buffer_from_user(adj_size, user_ptr) + resource = dev.screen().resource_create_buffer_from_user( + adj_size, + user_ptr, + PIPE_BIND_GLOBAL, + ) } if resource.is_none() { - resource = dev.screen().resource_create_buffer(adj_size, res_type) + resource = dev + .screen() + .resource_create_buffer(adj_size, res_type, PIPE_BIND_GLOBAL) } let resource = resource.ok_or(CL_OUT_OF_RESOURCES); diff --git a/src/gallium/frontends/rusticl/core/kernel.rs b/src/gallium/frontends/rusticl/core/kernel.rs index 8c5ab582d12..6ab38c5c9d4 100644 --- a/src/gallium/frontends/rusticl/core/kernel.rs +++ b/src/gallium/frontends/rusticl/core/kernel.rs @@ -1011,7 +1011,11 @@ impl Kernel { let buf = Arc::new( q.device .screen - .resource_create_buffer(printf_size, ResourceType::Staging) + .resource_create_buffer( + printf_size, + ResourceType::Staging, + PIPE_BIND_GLOBAL, + ) .unwrap(), ); diff --git a/src/gallium/frontends/rusticl/core/memory.rs b/src/gallium/frontends/rusticl/core/memory.rs index b0a56832faa..fc5887e5155 100644 --- a/src/gallium/frontends/rusticl/core/memory.rs +++ b/src/gallium/frontends/rusticl/core/memory.rs @@ -584,7 +584,7 @@ impl Mem { } else { let shadow = dev .screen() - .resource_create_buffer(size as u32, ResourceType::Staging) + .resource_create_buffer(size as u32, ResourceType::Staging, 0) .ok_or(CL_OUT_OF_RESOURCES)?; let tx = ctx .buffer_map_coherent(&shadow, 0, size, rw) diff --git a/src/gallium/frontends/rusticl/core/program.rs b/src/gallium/frontends/rusticl/core/program.rs index eb6d2230309..cec678b3042 100644 --- a/src/gallium/frontends/rusticl/core/program.rs +++ b/src/gallium/frontends/rusticl/core/program.rs @@ -112,9 +112,10 @@ impl NirKernelBuild { let len = buf.len() as u32; if len > 0 { + // TODO bind as constant buffer let res = dev .screen() - .resource_create_buffer(len, ResourceType::Normal) + .resource_create_buffer(len, ResourceType::Normal, PIPE_BIND_GLOBAL) .unwrap(); dev.helper_ctx() diff --git a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs index 28dc85d0f13..ff11cae7343 100644 --- a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs +++ b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs @@ -135,6 +135,7 @@ impl PipeScreen { &self, size: u32, res_type: ResourceType, + pipe_bind: u32, ) -> Option<PipeResource> { let mut tmpl = pipe_resource::default(); @@ -143,7 +144,7 @@ impl PipeScreen { tmpl.height0 = 1; tmpl.depth0 = 1; tmpl.array_size = 1; - tmpl.bind = PIPE_BIND_GLOBAL; + tmpl.bind = pipe_bind; res_type.apply(&mut tmpl); @@ -154,6 +155,7 @@ impl PipeScreen { &self, size: u32, mem: *mut c_void, + pipe_bind: u32, ) -> Option<PipeResource> { let mut tmpl = pipe_resource::default(); @@ -162,7 +164,7 @@ impl PipeScreen { tmpl.height0 = 1; tmpl.depth0 = 1; tmpl.array_size = 1; - tmpl.bind = PIPE_BIND_GLOBAL; + tmpl.bind = pipe_bind; self.resource_create_from_user(&tmpl, mem) }