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)
     }

Reply via email to