diff --git a/src/compiler/nir/meson.build b/src/compiler/nir/meson.build index 84297df9a5c..13bf5ffed99 100644 --- a/src/compiler/nir/meson.build +++ b/src/compiler/nir/meson.build @@ -372,10 +372,12 @@ _libnir = static_library( build_by_default : false, ) +inc_nir = include_directories('.') + # Headers-only dependency idep_nir_headers = declare_dependency( sources : [nir_opcodes_h, nir_builder_opcodes_h, nir_intrinsics_h, nir_intrinsics_indices_h], - include_directories : include_directories('.'), + include_directories : inc_nir, ) # Also link with nir diff --git a/src/gallium/frontends/rusticl/mesa/compiler/mod.rs b/src/gallium/frontends/rusticl/mesa/compiler/mod.rs index 7dffcb7dcf9..3367738248d 100644 --- a/src/gallium/frontends/rusticl/mesa/compiler/mod.rs +++ b/src/gallium/frontends/rusticl/mesa/compiler/mod.rs @@ -1 +1,2 @@ pub mod clc; +pub mod nir; diff --git a/src/gallium/frontends/rusticl/mesa/compiler/nir.rs b/src/gallium/frontends/rusticl/mesa/compiler/nir.rs new file mode 100644 index 00000000000..6a4f8fa487c --- /dev/null +++ b/src/gallium/frontends/rusticl/mesa/compiler/nir.rs @@ -0,0 +1,15 @@ +extern crate mesa_rust_gen; + +use self::mesa_rust_gen::*; + +use std::ptr::NonNull; + +pub struct NirShader { + nir: NonNull, +} + +impl Drop for NirShader { + fn drop(&mut self) { + unsafe { ralloc_free(self.nir.as_ptr().cast()) }; + } +} diff --git a/src/gallium/frontends/rusticl/meson.build b/src/gallium/frontends/rusticl/meson.build index b55ba94aacf..a922f9ea0f3 100644 --- a/src/gallium/frontends/rusticl/meson.build +++ b/src/gallium/frontends/rusticl/meson.build @@ -31,6 +31,7 @@ libmesa_rust_util_files = files( libmesa_rust_files = files( 'mesa/lib.rs', 'mesa/compiler/mod.rs', + 'mesa/compiler/nir.rs', 'mesa/compiler/clc/mod.rs', 'mesa/compiler/clc/spirv.rs', 'mesa/pipe/context.rs', @@ -167,16 +168,20 @@ rusticl_mesa_bindings_rs = rust.bindgen( input : 'rusticl_mesa_bindings.h', output : 'rusticl_mesa_bindings.rs', include_directories : [ + inc_compiler, inc_gallium, inc_gallium_aux, inc_include, + inc_nir, inc_src, ], c_args : pre_args, args : [ rusticl_bindgen_args, '--whitelist-function', 'clc_.*', + '--whitelist-function', 'nir_.*', '--whitelist-function', 'pipe_.*', + '--whitelist-function', 'ralloc_.*', '--whitelist-type', 'pipe_endian', '--whitelist-type', 'clc_kernel_arg_access_qualifier', '--bitfield-enum', 'clc_kernel_arg_access_qualifier', diff --git a/src/gallium/frontends/rusticl/rusticl_mesa_bindings.h b/src/gallium/frontends/rusticl/rusticl_mesa_bindings.h index d8c0d623be6..830e544ad92 100644 --- a/src/gallium/frontends/rusticl/rusticl_mesa_bindings.h +++ b/src/gallium/frontends/rusticl/rusticl_mesa_bindings.h @@ -2,6 +2,8 @@ #include "compiler/clc/clc.h" +#include "nir.h" + #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_screen.h"