From 5ac60c7e700508a954025c88301bd9622da6c1d3 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Wed, 29 Jan 2025 00:43:13 -0500 Subject: [PATCH 01/16] Dependencies updated and toolchain updated to a modern version of rust nightly. Had to update the vek, sysinfo, and rayon crates, since they wer pulling in code from dependencies that has long since been broken. rustc codegen nvvm is still broken, seems to have a number of issues. Once I got Optix installed and setup, I started having trouble with llvm. The build file seems to need llvm-config, which does not ship with precompiled binaries for llvm. I compiled llvm from source, but am still unable to get the build file to find that correctly. There are also a number of regular errors which will need to resolved slowly. --- crates/cuda_std/Cargo.toml | 2 +- crates/cust/Cargo.toml | 2 +- crates/cust_core/Cargo.toml | 2 +- examples/cuda/cpu/add/Cargo.toml | 4 ++-- examples/cuda/cpu/path_tracer/Cargo.toml | 6 +++--- examples/optix/denoiser/Cargo.toml | 2 +- rust-toolchain | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crates/cuda_std/Cargo.toml b/crates/cuda_std/Cargo.toml index 0a25f7e8..b5fc1ab6 100644 --- a/crates/cuda_std/Cargo.toml +++ b/crates/cuda_std/Cargo.toml @@ -8,7 +8,7 @@ repository = "https://github.com/Rust-GPU/Rust-CUDA" readme = "../../README.md" [dependencies] -vek = { version = "0.15.1", default-features = false, features = ["libm"] } +vek = { version = "0.17.1", default-features = false, features = ["libm"] } cuda_std_macros = { version = "0.2", path = "../cuda_std_macros" } half = "1.7.1" bitflags = "1.3.2" diff --git a/crates/cust/Cargo.toml b/crates/cust/Cargo.toml index 3f77ca9c..64cb5794 100644 --- a/crates/cust/Cargo.toml +++ b/crates/cust/Cargo.toml @@ -20,7 +20,7 @@ cust_derive = { path = "../cust_derive", version = "0.2" } glam = { version = "0.20", features=["cuda"], optional = true } mint = { version = "^0.5", optional = true } num-complex = { version = "0.4", optional = true } -vek = { version = "0.15.1", optional = true, default-features = false } +vek = { version = "0.17.1", optional = true, default-features = false } bytemuck = { version = "1.7.3", optional = true } [features] diff --git a/crates/cust_core/Cargo.toml b/crates/cust_core/Cargo.toml index 5adb9117..277f7777 100644 --- a/crates/cust_core/Cargo.toml +++ b/crates/cust_core/Cargo.toml @@ -8,7 +8,7 @@ repository = "https://github.com/Rust-GPU/Rust-CUDA" readme = "../../README.md" [dependencies] -vek = { version = "0.15.1", default-features=false, features=["libm"], optional = true } +vek = { version = "0.17.1", default-features=false, features=["libm"], optional = true } glam = { version = "0.20", features=["cuda", "libm"], default-features=false, optional=true } mint = { version = "^0.5", optional = true } half = { version = "1.8", optional = true } diff --git a/examples/cuda/cpu/add/Cargo.toml b/examples/cuda/cpu/add/Cargo.toml index d59b396c..f38776cf 100644 --- a/examples/cuda/cpu/add/Cargo.toml +++ b/examples/cuda/cpu/add/Cargo.toml @@ -16,8 +16,8 @@ regex = "=1.7.1" thread_local = "=1.1.4" jobserver = "=0.1.25" cc = "=1.0.78" -rayon = "=1.5.1" -rayon-core = "=1.10.0" +rayon = "=1.10" +rayon-core = "=1.12.1" byteorder = "=1.4.0" [build-dependencies] diff --git a/examples/cuda/cpu/path_tracer/Cargo.toml b/examples/cuda/cpu/path_tracer/Cargo.toml index ea322e30..8ec52cbc 100644 --- a/examples/cuda/cpu/path_tracer/Cargo.toml +++ b/examples/cuda/cpu/path_tracer/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2018" [dependencies] -vek = { version = "0.15", features = ["bytemuck", "mint"] } +vek = { version = "0.17.1", features = ["bytemuck", "mint"] } bytemuck = { version = "1.7.2", features = ["derive"] } cust = { version = "0.3", path = "../../../../crates/cust", features = ["impl_vek"] } image = "0.23.14" @@ -16,8 +16,8 @@ glutin = "0.27.0" imgui = "0.8.0" imgui-glium-renderer = "0.8.0" imgui-winit-support = "0.8.0" -rayon = "1.5.1" -sysinfo = "0.20.5" +rayon = "1.10" +sysinfo = "0.33.1" anyhow = "1.0.53" [build-dependencies] diff --git a/examples/optix/denoiser/Cargo.toml b/examples/optix/denoiser/Cargo.toml index 4e1b31f3..14394a02 100644 --- a/examples/optix/denoiser/Cargo.toml +++ b/examples/optix/denoiser/Cargo.toml @@ -8,4 +8,4 @@ optix = { version = "0.1", path = "../../../crates/optix" } structopt = "0.3" cust = { version = "0.3", path = "../../../crates/cust", features = ["impl_vek", "bytemuck"] } image = "0.23.14" -vek = { version = "0.15.1", features = ["bytemuck"] } +vek = { version = "0.17.1", features = ["bytemuck"] } diff --git a/rust-toolchain b/rust-toolchain index ecef8462..317b5e54 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -5,5 +5,5 @@ # to the user in the error, instead of "error: invalid channel name '[toolchain]'". [toolchain] -channel = "nightly-2021-12-04" +channel = "nightly-2024-12-04" components = ["rust-src", "rustc-dev", "llvm-tools-preview"] \ No newline at end of file From 1bef78f5203e6dd4e11f5c93cdd9d89dcae50a3a Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 1 Feb 2025 10:29:51 -0500 Subject: [PATCH 02/16] Dependencies for all crates should be updated to the latest available versions. Going to tackle any breaking changes next --- Cargo.toml | 3 +++ crates/blastoff/Cargo.toml | 6 +++--- crates/cuda_builder/Cargo.toml | 4 ++-- crates/cuda_std/Cargo.toml | 6 +++--- crates/cuda_std_macros/Cargo.toml | 6 +++--- crates/cudnn/Cargo.toml | 2 +- crates/cust/Cargo.toml | 8 ++++---- crates/cust_core/Cargo.toml | 6 +++--- crates/cust_derive/Cargo.toml | 6 +++--- crates/gpu_rand/Cargo.toml | 2 +- crates/optix/Cargo.toml | 10 +++++----- crates/optix_device/Cargo.toml | 8 ++++---- crates/optix_device_macros/Cargo.toml | 6 +++--- crates/ptx/Cargo.toml | 4 ++-- crates/rustc_codegen_nvvm/Cargo.toml | 14 +++++++------- crates/rustc_codegen_nvvm_macros/Cargo.toml | 6 +++--- examples/cuda/cpu/add/Cargo.toml | 2 +- examples/cuda/cpu/path_tracer/Cargo.toml | 4 ++-- examples/cuda/gpu/path_tracer_gpu/Cargo.toml | 2 +- examples/optix/denoiser/Cargo.toml | 2 +- rust-toolchain | 2 +- xtask/Cargo.toml | 4 ++-- 22 files changed, 58 insertions(+), 55 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 067e29d2..086ef37e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,7 @@ [workspace] + +resolver = "2" + members = [ "crates/*", "crates/optix/examples/ex*", diff --git a/crates/blastoff/Cargo.toml b/crates/blastoff/Cargo.toml index 097a03bb..0d3f69c9 100644 --- a/crates/blastoff/Cargo.toml +++ b/crates/blastoff/Cargo.toml @@ -6,11 +6,11 @@ authors = ["Riccardo D'Ambrosio "] repository = "https://github.com/Rust-GPU/Rust-CUDA" [dependencies] -bitflags = "1.3.2" +bitflags = "2.8" cublas_sys = { version = "0.1", path = "../cublas_sys" } cust = { version = "0.3", path = "../cust", features = ["impl_num_complex"] } -num-complex = "0.4.0" -half = { version = "1.8.0", optional = true } +num-complex = "0.4.6" +half = { version = "2.4.1", optional = true } [package.metadata.docs.rs] rustdoc-args = ["--html-in-header", "katex-header.html", "--cfg", "docsrs"] diff --git a/crates/cuda_builder/Cargo.toml b/crates/cuda_builder/Cargo.toml index 53de4fda..953fef98 100644 --- a/crates/cuda_builder/Cargo.toml +++ b/crates/cuda_builder/Cargo.toml @@ -11,6 +11,6 @@ readme = "../../README.md" [dependencies] rustc_codegen_nvvm = { version = "0.3", path = "../rustc_codegen_nvvm" } nvvm = { path = "../nvvm", version = "0.1" } -serde = { version = "1.0.130", features = ["derive"] } -serde_json = "1.0.68" +serde = { version = "1.0.217", features = ["derive"] } +serde_json = "1.0.138" find_cuda_helper = { version = "0.2", path = "../find_cuda_helper" } diff --git a/crates/cuda_std/Cargo.toml b/crates/cuda_std/Cargo.toml index b5fc1ab6..4e120f53 100644 --- a/crates/cuda_std/Cargo.toml +++ b/crates/cuda_std/Cargo.toml @@ -10,6 +10,6 @@ readme = "../../README.md" [dependencies] vek = { version = "0.17.1", default-features = false, features = ["libm"] } cuda_std_macros = { version = "0.2", path = "../cuda_std_macros" } -half = "1.7.1" -bitflags = "1.3.2" -paste = "1.0.5" +half = "2.4.1" +bitflags = "2.8" +paste = "1.0.15" diff --git a/crates/cuda_std_macros/Cargo.toml b/crates/cuda_std_macros/Cargo.toml index fa31230f..45e92cdc 100644 --- a/crates/cuda_std_macros/Cargo.toml +++ b/crates/cuda_std_macros/Cargo.toml @@ -11,6 +11,6 @@ readme = "../../README.md" proc-macro = true [dependencies] -quote = "1.0.9" -syn = { version = "1.0.75", features = ["full"] } -proc-macro2 = "1" +quote = "1.0.38" +syn = { version = "2.0.96", features = ["full"] } +proc-macro2 = "1.0.93" diff --git a/crates/cudnn/Cargo.toml b/crates/cudnn/Cargo.toml index 81be8297..f7ba0b9d 100644 --- a/crates/cudnn/Cargo.toml +++ b/crates/cudnn/Cargo.toml @@ -5,5 +5,5 @@ name = "cudnn" version = "0.1.0" [dependencies] -bitflags = "1.3.2" +bitflags = "2.8" cust = {version = "0.3.2", path = "../cust"} diff --git a/crates/cust/Cargo.toml b/crates/cust/Cargo.toml index 64cb5794..bb5a3427 100644 --- a/crates/cust/Cargo.toml +++ b/crates/cust/Cargo.toml @@ -15,13 +15,13 @@ readme = "../../README.md" [dependencies] cust_core = { path = "../cust_core", version = "0.1.0"} cust_raw = { path = "../cust_raw", version = "0.11.2"} -bitflags = "1.2" +bitflags = "2.8" cust_derive = { path = "../cust_derive", version = "0.2" } -glam = { version = "0.20", features=["cuda"], optional = true } +glam = { version = "0.29.2", features=["cuda"], optional = true } mint = { version = "^0.5", optional = true } -num-complex = { version = "0.4", optional = true } +num-complex = { version = "0.4.6", optional = true } vek = { version = "0.17.1", optional = true, default-features = false } -bytemuck = { version = "1.7.3", optional = true } +bytemuck = { version = "1.21", optional = true } [features] default= ["bytemuck", "impl_glam", "impl_mint", "impl_vek"] diff --git a/crates/cust_core/Cargo.toml b/crates/cust_core/Cargo.toml index 277f7777..5f24445b 100644 --- a/crates/cust_core/Cargo.toml +++ b/crates/cust_core/Cargo.toml @@ -9,8 +9,8 @@ readme = "../../README.md" [dependencies] vek = { version = "0.17.1", default-features=false, features=["libm"], optional = true } -glam = { version = "0.20", features=["cuda", "libm"], default-features=false, optional=true } +glam = { version = "0.29.2", features=["cuda", "libm"], default-features=false, optional=true } mint = { version = "^0.5", optional = true } -half = { version = "1.8", optional = true } -num-complex = { version = "0.4", optional = true } +half = { version = "2.4.1", optional = true } +num-complex = { version = "0.4.6", optional = true } cust_derive = { path = "../cust_derive", version = "0.2" } diff --git a/crates/cust_derive/Cargo.toml b/crates/cust_derive/Cargo.toml index 82d467c7..d4d908af 100644 --- a/crates/cust_derive/Cargo.toml +++ b/crates/cust_derive/Cargo.toml @@ -12,6 +12,6 @@ readme = "../../README.md" proc-macro = true [dependencies] -syn = "1.0" -quote = "1.0" -proc-macro2 = "1.0" +syn = "2.0.96" +quote = "1.0.38" +proc-macro2 = "1.0.93" diff --git a/crates/gpu_rand/Cargo.toml b/crates/gpu_rand/Cargo.toml index cca9ff84..af780254 100644 --- a/crates/gpu_rand/Cargo.toml +++ b/crates/gpu_rand/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/Rust-GPU/Rust-CUDA" readme = "../../README.md" [dependencies] -rand_core = { version = "0.6" } +rand_core = { version = "0.9" } cust_core = { version = "0.1.0", path = "../cust_core" } [target.'cfg(target_os = "cuda")'.dependencies] diff --git a/crates/optix/Cargo.toml b/crates/optix/Cargo.toml index 8fc73770..815e4bbe 100644 --- a/crates/optix/Cargo.toml +++ b/crates/optix/Cargo.toml @@ -19,11 +19,11 @@ impl_half=["cust/impl_half", "half"] cust = { version = "0.3", path = "../cust", features=["impl_mint"] } cust_raw = { version = "0.11.2", path = "../cust_raw" } cfg-if = "1.0.0" -bitflags = "1.3.2" -glam = { version = "0.20", features=["cuda", "libm"], default-features=false, optional=true } -half = { version = "^1.8", optional = true } -memoffset = "0.6.4" -mint = "0.5.8" +bitflags = "2.8" +glam = { version = "0.29", features=["cuda", "libm"], default-features=false, optional=true } +half = { version = "2.4.1", optional = true } +memoffset = "0.9.1" +mint = "0.5.9" embed-doc-image = {version = "0.1.4"} [build-dependencies] diff --git a/crates/optix_device/Cargo.toml b/crates/optix_device/Cargo.toml index 92fb2db5..2252eb41 100644 --- a/crates/optix_device/Cargo.toml +++ b/crates/optix_device/Cargo.toml @@ -5,9 +5,9 @@ edition = "2021" authors = ["Anders Langlands ", "Riccardo D'Ambrosio "] [dependencies] -bitflags = "1.3.2" +bitflags = "2.8" cuda_std = { version = "0.2", path = "../cuda_std" } -glam = { version = "0.20", features=["cuda", "libm"], default-features=false } -paste = "1.0.6" -seq-macro = "0.3.0" +glam = { version = "0.29", features=["cuda", "libm"], default-features=false } +paste = "1.0.15" +seq-macro = "0.3.5" cust_core = { version = "0.1", path = "../cust_core" } diff --git a/crates/optix_device_macros/Cargo.toml b/crates/optix_device_macros/Cargo.toml index 255894d7..0c78df26 100644 --- a/crates/optix_device_macros/Cargo.toml +++ b/crates/optix_device_macros/Cargo.toml @@ -11,6 +11,6 @@ readme = "../../README.md" proc-macro = true [dependencies] -quote = "1.0.9" -syn = { version = "1.0.75", features = ["full"] } -proc-macro2 = "1" +quote = "1.0.38" +syn = { version = "2.0.96", features = ["full"] } +proc-macro2 = "1.0.93" diff --git a/crates/ptx/Cargo.toml b/crates/ptx/Cargo.toml index db1cf882..559badfa 100644 --- a/crates/ptx/Cargo.toml +++ b/crates/ptx/Cargo.toml @@ -10,5 +10,5 @@ readme = "../../README.md" [dependencies] ascii = "1" # used for lexing/serializing very large enums of instructions/opcodes -strum = { version = "0.21", features = ["derive"] } -smallvec = "1.7" +strum = { version = "0.26.3", features = ["derive"] } +smallvec = "1.13.2" diff --git a/crates/rustc_codegen_nvvm/Cargo.toml b/crates/rustc_codegen_nvvm/Cargo.toml index 01f74733..91846419 100644 --- a/crates/rustc_codegen_nvvm/Cargo.toml +++ b/crates/rustc_codegen_nvvm/Cargo.toml @@ -16,14 +16,14 @@ crate-type = ["dylib"] [dependencies] nvvm = { version = "0.1", path = "../nvvm" } -rustc-demangle = "0.1.20" -libc = "0.2.97" -tar = "0.4.35" -once_cell = "1.8.0" -bitflags = "1.3.2" -tracing = { version = "0.1.29", features = ["release_max_level_debug"] } +rustc-demangle = "0.1.24" +libc = "0.2.169" +tar = "0.4.43" +once_cell = "1.8.0" # this can be replaced wit std::cell implementation +bitflags = "2.8" +tracing = { version = "0.1.41", features = ["release_max_level_debug"] } find_cuda_helper = { version = "0.2", path = "../find_cuda_helper" } -tracing-subscriber = { version = "0.3.1", features = ["env-filter"] } +tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } rustc_codegen_nvvm_macros = { version = "0.1", path = "../rustc_codegen_nvvm_macros" } [build-dependencies] diff --git a/crates/rustc_codegen_nvvm_macros/Cargo.toml b/crates/rustc_codegen_nvvm_macros/Cargo.toml index 878b8a7b..65999434 100644 --- a/crates/rustc_codegen_nvvm_macros/Cargo.toml +++ b/crates/rustc_codegen_nvvm_macros/Cargo.toml @@ -11,6 +11,6 @@ readme = "../../README.md" proc-macro = true [dependencies] -syn = { version = "1.0.81", features = ["full"] } -quote = "1.0.10" -proc-macro2 = "1.0.32" +syn = { version = "2.0.96", features = ["full"] } +quote = "1.0.38" +proc-macro2 = "1.0.93" diff --git a/examples/cuda/cpu/add/Cargo.toml b/examples/cuda/cpu/add/Cargo.toml index f38776cf..ae99bb78 100644 --- a/examples/cuda/cpu/add/Cargo.toml +++ b/examples/cuda/cpu/add/Cargo.toml @@ -12,7 +12,7 @@ nanorand = "0.6.1" # the newest semver compatible versions anyway. log = "=0.4.17" regex-syntax = "=0.6.28" -regex = "=1.7.1" +regex = "=1.11.1" thread_local = "=1.1.4" jobserver = "=0.1.25" cc = "=1.0.78" diff --git a/examples/cuda/cpu/path_tracer/Cargo.toml b/examples/cuda/cpu/path_tracer/Cargo.toml index 8ec52cbc..14c1987d 100644 --- a/examples/cuda/cpu/path_tracer/Cargo.toml +++ b/examples/cuda/cpu/path_tracer/Cargo.toml @@ -5,9 +5,9 @@ edition = "2018" [dependencies] vek = { version = "0.17.1", features = ["bytemuck", "mint"] } -bytemuck = { version = "1.7.2", features = ["derive"] } +bytemuck = { version = "1.21", features = ["derive"] } cust = { version = "0.3", path = "../../../../crates/cust", features = ["impl_vek"] } -image = "0.23.14" +image = "0.25.5" path_tracer_gpu = { path = "../../gpu/path_tracer_gpu" } gpu_rand = { version = "0.1", path = "../../../../crates/gpu_rand" } optix = { version = "0.1", path = "../../../../crates/optix" } diff --git a/examples/cuda/gpu/path_tracer_gpu/Cargo.toml b/examples/cuda/gpu/path_tracer_gpu/Cargo.toml index a96a744b..46a07950 100644 --- a/examples/cuda/gpu/path_tracer_gpu/Cargo.toml +++ b/examples/cuda/gpu/path_tracer_gpu/Cargo.toml @@ -5,7 +5,7 @@ edition = "2018" [dependencies] cuda_std = { version = "0.2", path = "../../../../crates/cuda_std" } -enum_dispatch = "0.3.7" +enum_dispatch = "0.3.13" gpu_rand = { version = "0.1", path = "../../../../crates/gpu_rand" } cust_core = { path = "../../../../crates/cust_core" } optix_device = { path = "../../../../crates/optix_device" } diff --git a/examples/optix/denoiser/Cargo.toml b/examples/optix/denoiser/Cargo.toml index 14394a02..134beb20 100644 --- a/examples/optix/denoiser/Cargo.toml +++ b/examples/optix/denoiser/Cargo.toml @@ -7,5 +7,5 @@ edition = "2021" optix = { version = "0.1", path = "../../../crates/optix" } structopt = "0.3" cust = { version = "0.3", path = "../../../crates/cust", features = ["impl_vek", "bytemuck"] } -image = "0.23.14" +image = "0.25.5" vek = { version = "0.17.1", features = ["bytemuck"] } diff --git a/rust-toolchain b/rust-toolchain index 317b5e54..4937196f 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -5,5 +5,5 @@ # to the user in the error, instead of "error: invalid channel name '[toolchain]'". [toolchain] -channel = "nightly-2024-12-04" +channel = "nightly-2025-01-23" components = ["rust-src", "rustc-dev", "llvm-tools-preview"] \ No newline at end of file diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index d4712d75..b64ae395 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -6,6 +6,6 @@ license = "MIT" [dependencies] pico-args = "0.4.2" -rayon = "1.5.1" -regex = "1.3.9" +rayon = "1.10" +regex = "1.11.1" rustc_codegen_nvvm = { path = "../crates/rustc_codegen_nvvm" } From aac49ce8a37523b47b887fb197fe602ca44ae7a1 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 1 Feb 2025 10:34:43 -0500 Subject: [PATCH 03/16] Two bit flag fields in cust/texture.rs did not implement traits required by the structs they were contained in. This has been resolved --- crates/cust/src/texture.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/cust/src/texture.rs b/crates/cust/src/texture.rs index 7acd9ebe..9becce41 100644 --- a/crates/cust/src/texture.rs +++ b/crates/cust/src/texture.rs @@ -41,7 +41,7 @@ pub enum TextureFilterMode { bitflags::bitflags! { /// Flags which modify the behavior of CUDA texture creation. - #[derive(Default)] + #[derive(Default, Debug, Clone, Copy)] pub struct TextureDescriptorFlags: c_uint { /// Suppresses the default behavior of having the texture promote data to floating point data in the range /// of [0, 1]. This flag does nothing if the texture is a texture of `u32`s. @@ -306,7 +306,7 @@ impl ResourceViewDescriptor { bitflags::bitflags! { /// Flags for a resource descriptor. Currently empty. - #[derive(Default)] + #[derive(Default, Debug)] pub struct ResourceDescriptorFlags: c_uint { #[doc(hidden)] const _ZERO = 0; From 912ee90f542a067d9829a482a2e97c72dcc08019 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 1 Feb 2025 10:37:50 -0500 Subject: [PATCH 04/16] I both of these files, the field access was replaced with a getter method, which was previously throwing an error --- crates/cuda_std_macros/src/lib.rs | 4 ++-- crates/cust/src/graph.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/cuda_std_macros/src/lib.rs b/crates/cuda_std_macros/src/lib.rs index b813ee9a..38c4d34f 100644 --- a/crates/cuda_std_macros/src/lib.rs +++ b/crates/cuda_std_macros/src/lib.rs @@ -156,7 +156,7 @@ pub fn gpu_only(_attr: proc_macro::TokenStream, item: proc_macro::TokenStream) - let mut cloned_attrs = attrs.clone(); cloned_attrs.retain(|a| { - !a.path + !a.path() .get_ident() .map(|x| *x == "nvvm_internal") .unwrap_or_default() @@ -199,7 +199,7 @@ pub fn externally_visible( let mut func = syn::parse_macro_input!(item as syn::ItemFn); assert!( - func.attrs.iter().any(|a| a.path.is_ident("no_mangle")), + func.attrs.iter().any(|a| a.path().is_ident("no_mangle")), "#[externally_visible] function should also be #[no_mangle]" ); diff --git a/crates/cust/src/graph.rs b/crates/cust/src/graph.rs index d5c55813..e4b8bc9e 100644 --- a/crates/cust/src/graph.rs +++ b/crates/cust/src/graph.rs @@ -320,7 +320,7 @@ impl Graph { let mut raw = MaybeUninit::uninit(); unsafe { - cuda::cuGraphCreate(raw.as_mut_ptr(), flags.bits).to_result()?; + cuda::cuGraphCreate(raw.as_mut_ptr(), flags.bits()).to_result()?; Ok(Self { raw: raw.assume_init(), From a9cbc6dfd366209939c6b69a25811811d9dc355b Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 1 Feb 2025 10:40:33 -0500 Subject: [PATCH 05/16] ArrayObjectFlags needed Debug and PartialEq traits to be derived, was throwing an error before --- crates/cust/src/memory/array.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/cust/src/memory/array.rs b/crates/cust/src/memory/array.rs index 565c9a73..8f3fa12c 100644 --- a/crates/cust/src/memory/array.rs +++ b/crates/cust/src/memory/array.rs @@ -155,7 +155,7 @@ impl ArrayFormat { bitflags::bitflags! { /// Flags which modify the behavior of CUDA array creation. - #[derive(Default)] + #[derive(Default, Debug, PartialEq)] pub struct ArrayObjectFlags: c_uint { /// Enables creation of layered CUDA arrays. When this flag is set, depth specifies the /// number of layers, not the depth of a 3D array. From f1fc6cc4e4a611da036b4df62fe28cc822c4b974 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Wed, 26 Feb 2025 20:02:12 -0500 Subject: [PATCH 06/16] updating another file --- crates/optix_device/src/transform.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/optix_device/src/transform.rs b/crates/optix_device/src/transform.rs index b2b1f15d..9123cc48 100644 --- a/crates/optix_device/src/transform.rs +++ b/crates/optix_device/src/transform.rs @@ -96,6 +96,7 @@ fn matrix_motion_transform_from_handle_ptr( bitflags::bitflags! { /// Possible motion flags. #[repr(transparent)] + #[derive(Debug, Clone, PartialEq)] pub struct MotionFlags: u32 { const START_VANISH = 1 << 0; const END_VANISH = 1 << 1; From 28f7d7f141cb2fa44cf1efeb0e114fbef5f8df39 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Thu, 27 Feb 2025 14:01:36 -0500 Subject: [PATCH 07/16] removed once_cell as dependency from rustc_codegen_nvvm. The goal was to replace with the standardized version from the std library, but the dependency does not seem to be in use anyway --- crates/rustc_codegen_nvvm/Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/rustc_codegen_nvvm/Cargo.toml b/crates/rustc_codegen_nvvm/Cargo.toml index 91846419..acdc91a8 100644 --- a/crates/rustc_codegen_nvvm/Cargo.toml +++ b/crates/rustc_codegen_nvvm/Cargo.toml @@ -19,7 +19,6 @@ nvvm = { version = "0.1", path = "../nvvm" } rustc-demangle = "0.1.24" libc = "0.2.169" tar = "0.4.43" -once_cell = "1.8.0" # this can be replaced wit std::cell implementation bitflags = "2.8" tracing = { version = "0.1.41", features = ["release_max_level_debug"] } find_cuda_helper = { version = "0.2", path = "../find_cuda_helper" } From 89b28e666c7b1619426edd19d2bd4fbc96b74ad8 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 8 Mar 2025 12:32:30 -0500 Subject: [PATCH 08/16] update toolchain to 2023-04-15, the same as the most recent release of rust-gpu. Also updated crate dependencies to be compatible with this release. Using this toolchain means we're stuck to an older version of bindgen. In newer versions of llvm, characters for identifiers of files are emitted that bindgen says are invalid. This was fixed in bindgen 0.62, but since we're on 0.58, we don't have that bug fix and need to use llvm version 15 or older --- crates/optix/Cargo.toml | 2 +- crates/optix/optix_wrapper.rs | 834 +++++++++++++++++------ examples/cuda/cpu/path_tracer/Cargo.toml | 4 +- examples/optix/denoiser/Cargo.toml | 2 +- rust-toolchain | 2 +- 5 files changed, 647 insertions(+), 197 deletions(-) diff --git a/crates/optix/Cargo.toml b/crates/optix/Cargo.toml index 815e4bbe..87e05c0a 100644 --- a/crates/optix/Cargo.toml +++ b/crates/optix/Cargo.toml @@ -27,7 +27,7 @@ mint = "0.5.9" embed-doc-image = {version = "0.1.4"} [build-dependencies] -bindgen = "0.59" +bindgen = "0.58" cc = "1.0.71" find_cuda_helper = { version = "0.2", path = "../find_cuda_helper" } diff --git a/crates/optix/optix_wrapper.rs b/crates/optix/optix_wrapper.rs index 24bad9e9..fc640433 100644 --- a/crates/optix/optix_wrapper.rs +++ b/crates/optix/optix_wrapper.rs @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.58.1 */ #[repr(C)] pub struct __BindgenUnionField(::std::marker::PhantomData); @@ -73,6 +73,12 @@ pub struct OptixDenoiser_t { _unused: [u8; 0], } pub type OptixDenoiser = *mut OptixDenoiser_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct OptixTask_t { + _unused: [u8; 0], +} +pub type OptixTask = *mut OptixTask_t; pub type OptixTraversableHandle = ::std::os::raw::c_ulonglong; pub type OptixVisibilityMask = ::std::os::raw::c_uint; impl OptixResult { @@ -118,7 +124,7 @@ impl OptixResult { pub const OPTIX_ERROR_VALIDATION_FAILURE: OptixResult = OptixResult(7053); } impl OptixResult { - pub const OPTIX_ERROR_INVALID_PTX: OptixResult = OptixResult(7200); + pub const OPTIX_ERROR_INVALID_INPUT: OptixResult = OptixResult(7200); } impl OptixResult { pub const OPTIX_ERROR_INVALID_LAUNCH_PARAMETER: OptixResult = OptixResult(7201); @@ -154,7 +160,16 @@ impl OptixResult { pub const OPTIX_ERROR_DENOISER_NOT_INITIALIZED: OptixResult = OptixResult(7301); } impl OptixResult { - pub const OPTIX_ERROR_ACCEL_NOT_COMPATIBLE: OptixResult = OptixResult(7400); + pub const OPTIX_ERROR_NOT_COMPATIBLE: OptixResult = OptixResult(7400); +} +impl OptixResult { + pub const OPTIX_ERROR_PAYLOAD_TYPE_MISMATCH: OptixResult = OptixResult(7500); +} +impl OptixResult { + pub const OPTIX_ERROR_PAYLOAD_TYPE_RESOLUTION_FAILED: OptixResult = OptixResult(7501); +} +impl OptixResult { + pub const OPTIX_ERROR_PAYLOAD_TYPE_ID_INVALID: OptixResult = OptixResult(7502); } impl OptixResult { pub const OPTIX_ERROR_NOT_SUPPORTED: OptixResult = OptixResult(7800); @@ -177,6 +192,9 @@ impl OptixResult { impl OptixResult { pub const OPTIX_ERROR_LIBRARY_UNLOAD_FAILURE: OptixResult = OptixResult(7806); } +impl OptixResult { + pub const OPTIX_ERROR_DEVICE_OUT_OF_MEMORY: OptixResult = OptixResult(7807); +} impl OptixResult { pub const OPTIX_ERROR_CUDA_ERROR: OptixResult = OptixResult(7900); } @@ -200,6 +218,7 @@ pub mod OptixDeviceProperty { pub const OPTIX_DEVICE_PROPERTY_LIMIT_NUM_BITS_INSTANCE_VISIBILITY_MASK: Type = 8199; pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_RECORDS_PER_GAS: Type = 8200; pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_OFFSET: Type = 8201; + pub const OPTIX_DEVICE_PROPERTY_SHADER_EXECUTION_REORDERING: Type = 8202; } pub type OptixLogCallback = ::std::option::Option< unsafe extern "C" fn( @@ -224,17 +243,17 @@ pub struct OptixDeviceContextOptions { } impl Default for OptixDeviceContextOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } +pub const OptixDevicePropertyShaderExecutionReorderingFlags_OPTIX_DEVICE_PROPERTY_SHADER_EXECUTION_REORDERING_FLAG_NONE : OptixDevicePropertyShaderExecutionReorderingFlags = 0 ; +pub const OptixDevicePropertyShaderExecutionReorderingFlags_OPTIX_DEVICE_PROPERTY_SHADER_EXECUTION_REORDERING_FLAG_STANDARD : OptixDevicePropertyShaderExecutionReorderingFlags = 1 ; +pub type OptixDevicePropertyShaderExecutionReorderingFlags = ::std::os::raw::c_int; pub const OptixHitKind_OPTIX_HIT_KIND_TRIANGLE_FRONT_FACE: OptixHitKind = 254; pub const OptixHitKind_OPTIX_HIT_KIND_TRIANGLE_BACK_FACE: OptixHitKind = 255; pub type OptixHitKind = ::std::os::raw::c_int; pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_NONE: OptixIndicesFormat = 0; +pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_BYTE3: OptixIndicesFormat = 8449; pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_SHORT3: OptixIndicesFormat = 8450; pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_INT3: OptixIndicesFormat = 8451; pub type OptixIndicesFormat = ::std::os::raw::c_int; @@ -249,6 +268,155 @@ pub type OptixVertexFormat = ::std::os::raw::c_int; pub const OptixTransformFormat_OPTIX_TRANSFORM_FORMAT_NONE: OptixTransformFormat = 0; pub const OptixTransformFormat_OPTIX_TRANSFORM_FORMAT_MATRIX_FLOAT12: OptixTransformFormat = 8673; pub type OptixTransformFormat = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapBiasAndScaleFormat_OPTIX_DISPLACEMENT_MICROMAP_BIAS_AND_SCALE_FORMAT_NONE : OptixDisplacementMicromapBiasAndScaleFormat = 0 ; +pub const OptixDisplacementMicromapBiasAndScaleFormat_OPTIX_DISPLACEMENT_MICROMAP_BIAS_AND_SCALE_FORMAT_FLOAT2 : OptixDisplacementMicromapBiasAndScaleFormat = 8769 ; +pub const OptixDisplacementMicromapBiasAndScaleFormat_OPTIX_DISPLACEMENT_MICROMAP_BIAS_AND_SCALE_FORMAT_HALF2 : OptixDisplacementMicromapBiasAndScaleFormat = 8770 ; +pub type OptixDisplacementMicromapBiasAndScaleFormat = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapDirectionFormat_OPTIX_DISPLACEMENT_MICROMAP_DIRECTION_FORMAT_NONE : OptixDisplacementMicromapDirectionFormat = 0 ; +pub const OptixDisplacementMicromapDirectionFormat_OPTIX_DISPLACEMENT_MICROMAP_DIRECTION_FORMAT_FLOAT3 : OptixDisplacementMicromapDirectionFormat = 8801 ; +pub const OptixDisplacementMicromapDirectionFormat_OPTIX_DISPLACEMENT_MICROMAP_DIRECTION_FORMAT_HALF3 : OptixDisplacementMicromapDirectionFormat = 8802 ; +pub type OptixDisplacementMicromapDirectionFormat = ::std::os::raw::c_int; +pub const OptixOpacityMicromapFormat_OPTIX_OPACITY_MICROMAP_FORMAT_NONE: + OptixOpacityMicromapFormat = 0; +pub const OptixOpacityMicromapFormat_OPTIX_OPACITY_MICROMAP_FORMAT_2_STATE: + OptixOpacityMicromapFormat = 1; +pub const OptixOpacityMicromapFormat_OPTIX_OPACITY_MICROMAP_FORMAT_4_STATE: + OptixOpacityMicromapFormat = 2; +pub type OptixOpacityMicromapFormat = ::std::os::raw::c_int; +pub const OptixOpacityMicromapArrayIndexingMode_OPTIX_OPACITY_MICROMAP_ARRAY_INDEXING_MODE_NONE: + OptixOpacityMicromapArrayIndexingMode = 0; +pub const OptixOpacityMicromapArrayIndexingMode_OPTIX_OPACITY_MICROMAP_ARRAY_INDEXING_MODE_LINEAR : OptixOpacityMicromapArrayIndexingMode = 1 ; +pub const OptixOpacityMicromapArrayIndexingMode_OPTIX_OPACITY_MICROMAP_ARRAY_INDEXING_MODE_INDEXED : OptixOpacityMicromapArrayIndexingMode = 2 ; +pub type OptixOpacityMicromapArrayIndexingMode = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixOpacityMicromapUsageCount { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixOpacityMicromapFormat, +} +impl Default for OptixOpacityMicromapUsageCount { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixBuildInputOpacityMicromap { + pub indexingMode: OptixOpacityMicromapArrayIndexingMode, + pub opacityMicromapArray: CUdeviceptr, + pub indexBuffer: CUdeviceptr, + pub indexSizeInBytes: ::std::os::raw::c_uint, + pub indexStrideInBytes: ::std::os::raw::c_uint, + pub indexOffset: ::std::os::raw::c_uint, + pub numMicromapUsageCounts: ::std::os::raw::c_uint, + pub micromapUsageCounts: *const OptixOpacityMicromapUsageCount, +} +impl Default for OptixBuildInputOpacityMicromap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInputOpacityMicromap { + pub opacityMicromapArray: CUdeviceptr, +} +impl Default for OptixRelocateInputOpacityMicromap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_NONE: + OptixDisplacementMicromapFormat = 0; +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_64_MICRO_TRIS_64_BYTES : OptixDisplacementMicromapFormat = 1 ; +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_256_MICRO_TRIS_128_BYTES : OptixDisplacementMicromapFormat = 2 ; +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_1024_MICRO_TRIS_128_BYTES : OptixDisplacementMicromapFormat = 3 ; +pub type OptixDisplacementMicromapFormat = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapFlags_OPTIX_DISPLACEMENT_MICROMAP_FLAG_NONE: + OptixDisplacementMicromapFlags = 0; +pub const OptixDisplacementMicromapFlags_OPTIX_DISPLACEMENT_MICROMAP_FLAG_PREFER_FAST_TRACE: + OptixDisplacementMicromapFlags = 1; +pub const OptixDisplacementMicromapFlags_OPTIX_DISPLACEMENT_MICROMAP_FLAG_PREFER_FAST_BUILD: + OptixDisplacementMicromapFlags = 2; +pub type OptixDisplacementMicromapFlags = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_NONE: + OptixDisplacementMicromapTriangleFlags = 0; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_DECIMATE_EDGE_01 : OptixDisplacementMicromapTriangleFlags = 1 ; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_DECIMATE_EDGE_12 : OptixDisplacementMicromapTriangleFlags = 2 ; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_DECIMATE_EDGE_20 : OptixDisplacementMicromapTriangleFlags = 4 ; +pub type OptixDisplacementMicromapTriangleFlags = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct OptixDisplacementMicromapDesc { + pub byteOffset: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_ushort, + pub format: ::std::os::raw::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixDisplacementMicromapHistogramEntry { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixDisplacementMicromapFormat, +} +impl Default for OptixDisplacementMicromapHistogramEntry { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixDisplacementMicromapArrayBuildInput { + pub flags: OptixDisplacementMicromapFlags, + pub displacementValuesBuffer: CUdeviceptr, + pub perDisplacementMicromapDescBuffer: CUdeviceptr, + pub perDisplacementMicromapDescStrideInBytes: ::std::os::raw::c_uint, + pub numDisplacementMicromapHistogramEntries: ::std::os::raw::c_uint, + pub displacementMicromapHistogramEntries: *const OptixDisplacementMicromapHistogramEntry, +} +impl Default for OptixDisplacementMicromapArrayBuildInput { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixDisplacementMicromapUsageCount { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixDisplacementMicromapFormat, +} +impl Default for OptixDisplacementMicromapUsageCount { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const OptixDisplacementMicromapArrayIndexingMode_OPTIX_DISPLACEMENT_MICROMAP_ARRAY_INDEXING_MODE_NONE : OptixDisplacementMicromapArrayIndexingMode = 0 ; +pub const OptixDisplacementMicromapArrayIndexingMode_OPTIX_DISPLACEMENT_MICROMAP_ARRAY_INDEXING_MODE_LINEAR : OptixDisplacementMicromapArrayIndexingMode = 1 ; +pub const OptixDisplacementMicromapArrayIndexingMode_OPTIX_DISPLACEMENT_MICROMAP_ARRAY_INDEXING_MODE_INDEXED : OptixDisplacementMicromapArrayIndexingMode = 2 ; +pub type OptixDisplacementMicromapArrayIndexingMode = ::std::os::raw::c_int; +#[repr(C)] +pub struct OptixBuildInputDisplacementMicromap { + pub indexingMode: OptixDisplacementMicromapArrayIndexingMode, + pub displacementMicromapArray: CUdeviceptr, + pub displacementMicromapIndexBuffer: CUdeviceptr, + pub vertexDirectionsBuffer: CUdeviceptr, + pub vertexBiasAndScaleBuffer: CUdeviceptr, + pub triangleFlagsBuffer: CUdeviceptr, + pub displacementMicromapIndexOffset: ::std::os::raw::c_uint, + pub displacementMicromapIndexStrideInBytes: ::std::os::raw::c_uint, + pub displacementMicromapIndexSizeInBytes: ::std::os::raw::c_uint, + pub vertexDirectionFormat: OptixDisplacementMicromapDirectionFormat, + pub vertexDirectionStrideInBytes: ::std::os::raw::c_uint, + pub vertexBiasAndScaleFormat: OptixDisplacementMicromapBiasAndScaleFormat, + pub vertexBiasAndScaleStrideInBytes: ::std::os::raw::c_uint, + pub triangleFlagsStrideInBytes: ::std::os::raw::c_uint, + pub numDisplacementMicromapUsageCounts: ::std::os::raw::c_uint, + pub displacementMicromapUsageCounts: *const OptixDisplacementMicromapUsageCount, +} +impl Default for OptixBuildInputDisplacementMicromap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} #[repr(C)] pub struct OptixBuildInputTriangleArray { pub vertexBuffers: *const CUdeviceptr, @@ -267,14 +435,22 @@ pub struct OptixBuildInputTriangleArray { pub sbtIndexOffsetStrideInBytes: ::std::os::raw::c_uint, pub primitiveIndexOffset: ::std::os::raw::c_uint, pub transformFormat: OptixTransformFormat, + pub opacityMicromap: OptixBuildInputOpacityMicromap, + pub displacementMicromap: OptixBuildInputDisplacementMicromap, } impl Default for OptixBuildInputTriangleArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInputTriangleArray { + pub numSbtRecords: ::std::os::raw::c_uint, + pub opacityMicromap: OptixRelocateInputOpacityMicromap, +} +impl Default for OptixRelocateInputTriangleArray { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_CUSTOM: OptixPrimitiveType = 9472; @@ -282,7 +458,13 @@ pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE: Optix 9473; pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BSPLINE: OptixPrimitiveType = 9474; pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR: OptixPrimitiveType = 9475; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_CATMULLROM: OptixPrimitiveType = 9476; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_FLAT_QUADRATIC_BSPLINE: OptixPrimitiveType = 9477; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_SPHERE: OptixPrimitiveType = 9478; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BEZIER: OptixPrimitiveType = 9479; pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_TRIANGLE: OptixPrimitiveType = 9521; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_DISPLACED_MICROMESH_TRIANGLE: OptixPrimitiveType = + 9522; pub type OptixPrimitiveType = ::std::os::raw::c_int; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_CUSTOM: OptixPrimitiveTypeFlags = 1; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_QUADRATIC_BSPLINE: @@ -291,9 +473,21 @@ pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CUBIC_BSPLINE OptixPrimitiveTypeFlags = 4; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_LINEAR: OptixPrimitiveTypeFlags = 8; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CATMULLROM: + OptixPrimitiveTypeFlags = 16; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_FLAT_QUADRATIC_BSPLINE: + OptixPrimitiveTypeFlags = 32; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_SPHERE: OptixPrimitiveTypeFlags = 64; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CUBIC_BEZIER: + OptixPrimitiveTypeFlags = 128; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_TRIANGLE: OptixPrimitiveTypeFlags = -2147483648; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_DISPLACED_MICROMESH_TRIANGLE: + OptixPrimitiveTypeFlags = 1073741824; pub type OptixPrimitiveTypeFlags = ::std::os::raw::c_int; +pub const OptixCurveEndcapFlags_OPTIX_CURVE_ENDCAP_DEFAULT: OptixCurveEndcapFlags = 0; +pub const OptixCurveEndcapFlags_OPTIX_CURVE_ENDCAP_ON: OptixCurveEndcapFlags = 1; +pub type OptixCurveEndcapFlags = ::std::os::raw::c_int; #[repr(C)] pub struct OptixBuildInputCurveArray { pub curveType: OptixPrimitiveType, @@ -309,14 +503,31 @@ pub struct OptixBuildInputCurveArray { pub indexStrideInBytes: ::std::os::raw::c_uint, pub flag: ::std::os::raw::c_uint, pub primitiveIndexOffset: ::std::os::raw::c_uint, + pub endcapFlags: ::std::os::raw::c_uint, } impl Default for OptixBuildInputCurveArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixBuildInputSphereArray { + pub vertexBuffers: *const CUdeviceptr, + pub vertexStrideInBytes: ::std::os::raw::c_uint, + pub numVertices: ::std::os::raw::c_uint, + pub radiusBuffers: *const CUdeviceptr, + pub radiusStrideInBytes: ::std::os::raw::c_uint, + pub singleRadius: ::std::os::raw::c_int, + pub flags: *const ::std::os::raw::c_uint, + pub numSbtRecords: ::std::os::raw::c_uint, + pub sbtIndexOffsetBuffer: CUdeviceptr, + pub sbtIndexOffsetSizeInBytes: ::std::os::raw::c_uint, + pub sbtIndexOffsetStrideInBytes: ::std::os::raw::c_uint, + pub primitiveIndexOffset: ::std::os::raw::c_uint, +} +impl Default for OptixBuildInputSphereArray { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -343,25 +554,28 @@ pub struct OptixBuildInputCustomPrimitiveArray { } impl Default for OptixBuildInputCustomPrimitiveArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] pub struct OptixBuildInputInstanceArray { pub instances: CUdeviceptr, pub numInstances: ::std::os::raw::c_uint, + pub instanceStride: ::std::os::raw::c_uint, } impl Default for OptixBuildInputInstanceArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInputInstanceArray { + pub numInstances: ::std::os::raw::c_uint, + pub traversableHandles: CUdeviceptr, +} +impl Default for OptixRelocateInputInstanceArray { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_TRIANGLES: OptixBuildInputType = 8513; @@ -369,11 +583,13 @@ pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_CUSTOM_PRIMITIVES: OptixBui pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_INSTANCES: OptixBuildInputType = 8515; pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_INSTANCE_POINTERS: OptixBuildInputType = 8516; pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_CURVES: OptixBuildInputType = 8517; +pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_SPHERES: OptixBuildInputType = 8518; pub type OptixBuildInputType = ::std::os::raw::c_int; #[repr(C)] pub struct OptixBuildInput__bindgen_ty_1 { pub triangleArray: __BindgenUnionField, pub curveArray: __BindgenUnionField, + pub sphereArray: __BindgenUnionField, pub customPrimitiveArray: __BindgenUnionField, pub instanceArray: __BindgenUnionField, pub pad: __BindgenUnionField<[::std::os::raw::c_char; 1024usize]>, @@ -381,11 +597,28 @@ pub struct OptixBuildInput__bindgen_ty_1 { } impl Default for OptixBuildInput__bindgen_ty_1 { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInput { + pub type_: OptixBuildInputType, + pub __bindgen_anon_1: OptixRelocateInput__bindgen_ty_1, +} +#[repr(C)] +pub struct OptixRelocateInput__bindgen_ty_1 { + pub instanceArray: __BindgenUnionField, + pub triangleArray: __BindgenUnionField, + pub bindgen_union_field: [u64; 2usize], +} +impl Default for OptixRelocateInput__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for OptixRelocateInput { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_NONE: OptixInstanceFlags = 0; @@ -394,7 +627,9 @@ pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_TRIANGLE_FACE_CULLING: pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_FLIP_TRIANGLE_FACING: OptixInstanceFlags = 2; pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_ANYHIT: OptixInstanceFlags = 4; pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_ENFORCE_ANYHIT: OptixInstanceFlags = 8; -pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_TRANSFORM: OptixInstanceFlags = 64; +pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_FORCE_OPACITY_MICROMAP_2_STATE: + OptixInstanceFlags = 16; +pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_OPACITY_MICROMAPS: OptixInstanceFlags = 32; pub type OptixInstanceFlags = ::std::os::raw::c_int; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -414,7 +649,70 @@ pub const OptixBuildFlags_OPTIX_BUILD_FLAG_PREFER_FAST_TRACE: OptixBuildFlags = pub const OptixBuildFlags_OPTIX_BUILD_FLAG_PREFER_FAST_BUILD: OptixBuildFlags = 8; pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_RANDOM_VERTEX_ACCESS: OptixBuildFlags = 16; pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_RANDOM_INSTANCE_ACCESS: OptixBuildFlags = 32; +pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_OPACITY_MICROMAP_UPDATE: OptixBuildFlags = 64; +pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_DISABLE_OPACITY_MICROMAPS: OptixBuildFlags = 128; pub type OptixBuildFlags = ::std::os::raw::c_int; +pub const OptixOpacityMicromapFlags_OPTIX_OPACITY_MICROMAP_FLAG_NONE: OptixOpacityMicromapFlags = 0; +pub const OptixOpacityMicromapFlags_OPTIX_OPACITY_MICROMAP_FLAG_PREFER_FAST_TRACE: + OptixOpacityMicromapFlags = 1; +pub const OptixOpacityMicromapFlags_OPTIX_OPACITY_MICROMAP_FLAG_PREFER_FAST_BUILD: + OptixOpacityMicromapFlags = 2; +pub type OptixOpacityMicromapFlags = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct OptixOpacityMicromapDesc { + pub byteOffset: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_ushort, + pub format: ::std::os::raw::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixOpacityMicromapHistogramEntry { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixOpacityMicromapFormat, +} +impl Default for OptixOpacityMicromapHistogramEntry { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixOpacityMicromapArrayBuildInput { + pub flags: ::std::os::raw::c_uint, + pub inputBuffer: CUdeviceptr, + pub perMicromapDescBuffer: CUdeviceptr, + pub perMicromapDescStrideInBytes: ::std::os::raw::c_uint, + pub numMicromapHistogramEntries: ::std::os::raw::c_uint, + pub micromapHistogramEntries: *const OptixOpacityMicromapHistogramEntry, +} +impl Default for OptixOpacityMicromapArrayBuildInput { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixMicromapBufferSizes { + pub outputSizeInBytes: size_t, + pub tempSizeInBytes: size_t, +} +impl Default for OptixMicromapBufferSizes { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixMicromapBuffers { + pub output: CUdeviceptr, + pub outputSizeInBytes: size_t, + pub temp: CUdeviceptr, + pub tempSizeInBytes: size_t, +} +impl Default for OptixMicromapBuffers { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} pub const OptixBuildOperation_OPTIX_BUILD_OPERATION_BUILD: OptixBuildOperation = 8545; pub const OptixBuildOperation_OPTIX_BUILD_OPERATION_UPDATE: OptixBuildOperation = 8546; pub type OptixBuildOperation = ::std::os::raw::c_int; @@ -439,11 +737,7 @@ pub struct OptixAccelBuildOptions { } impl Default for OptixAccelBuildOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -454,11 +748,7 @@ pub struct OptixAccelBufferSizes { } impl Default for OptixAccelBufferSizes { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub const OptixAccelPropertyType_OPTIX_PROPERTY_TYPE_COMPACTED_SIZE: OptixAccelPropertyType = 8577; @@ -471,16 +761,12 @@ pub struct OptixAccelEmitDesc { } impl Default for OptixAccelEmitDesc { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixAccelRelocationInfo { +pub struct OptixRelocationInfo { pub info: [::std::os::raw::c_ulonglong; 4usize], } #[repr(C)] @@ -535,14 +821,17 @@ pub const OptixTraversableType_OPTIX_TRAVERSABLE_TYPE_SRT_MOTION_TRANSFORM: Opti pub type OptixTraversableType = ::std::os::raw::c_int; pub mod OptixPixelFormat { pub type Type = ::std::os::raw::c_int; + pub const OPTIX_PIXEL_FORMAT_HALF1: Type = 8714; pub const OPTIX_PIXEL_FORMAT_HALF2: Type = 8711; pub const OPTIX_PIXEL_FORMAT_HALF3: Type = 8705; pub const OPTIX_PIXEL_FORMAT_HALF4: Type = 8706; + pub const OPTIX_PIXEL_FORMAT_FLOAT1: Type = 8715; pub const OPTIX_PIXEL_FORMAT_FLOAT2: Type = 8712; pub const OPTIX_PIXEL_FORMAT_FLOAT3: Type = 8707; pub const OPTIX_PIXEL_FORMAT_FLOAT4: Type = 8708; pub const OPTIX_PIXEL_FORMAT_UCHAR3: Type = 8709; pub const OPTIX_PIXEL_FORMAT_UCHAR4: Type = 8710; + pub const OPTIX_PIXEL_FORMAT_INTERNAL_GUIDE_LAYER: Type = 8713; } #[repr(C)] pub struct OptixImage2D { @@ -555,11 +844,7 @@ pub struct OptixImage2D { } impl Default for OptixImage2D { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub mod OptixDenoiserModelKind { @@ -568,57 +853,68 @@ pub mod OptixDenoiserModelKind { pub const OPTIX_DENOISER_MODEL_KIND_HDR: Type = 8995; pub const OPTIX_DENOISER_MODEL_KIND_AOV: Type = 8996; pub const OPTIX_DENOISER_MODEL_KIND_TEMPORAL: Type = 8997; + pub const OPTIX_DENOISER_MODEL_KIND_TEMPORAL_AOV: Type = 8998; + pub const OPTIX_DENOISER_MODEL_KIND_UPSCALE2X: Type = 8999; + pub const OPTIX_DENOISER_MODEL_KIND_TEMPORAL_UPSCALE2X: Type = 9000; } +pub const OptixDenoiserAlphaMode_OPTIX_DENOISER_ALPHA_MODE_COPY: OptixDenoiserAlphaMode = 0; +pub const OptixDenoiserAlphaMode_OPTIX_DENOISER_ALPHA_MODE_DENOISE: OptixDenoiserAlphaMode = 1; +pub type OptixDenoiserAlphaMode = ::std::os::raw::c_int; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct OptixDenoiserOptions { pub guideAlbedo: ::std::os::raw::c_uint, pub guideNormal: ::std::os::raw::c_uint, + pub denoiseAlpha: OptixDenoiserAlphaMode, +} +impl Default for OptixDenoiserOptions { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } } #[repr(C)] pub struct OptixDenoiserGuideLayer { pub albedo: OptixImage2D, pub normal: OptixImage2D, pub flow: OptixImage2D, + pub previousOutputInternalGuideLayer: OptixImage2D, + pub outputInternalGuideLayer: OptixImage2D, + pub flowTrustworthiness: OptixImage2D, } impl Default for OptixDenoiserGuideLayer { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_NONE: OptixDenoiserAOVType = 0; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_BEAUTY: OptixDenoiserAOVType = 28672; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_SPECULAR: OptixDenoiserAOVType = 28673; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_REFLECTION: OptixDenoiserAOVType = 28674; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_REFRACTION: OptixDenoiserAOVType = 28675; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_DIFFUSE: OptixDenoiserAOVType = 28676; +pub type OptixDenoiserAOVType = ::std::os::raw::c_int; #[repr(C)] pub struct OptixDenoiserLayer { pub input: OptixImage2D, pub previousOutput: OptixImage2D, pub output: OptixImage2D, + pub type_: OptixDenoiserAOVType, } impl Default for OptixDenoiserLayer { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] pub struct OptixDenoiserParams { - pub denoiseAlpha: ::std::os::raw::c_uint, pub hdrIntensity: CUdeviceptr, pub blendFactor: f32, pub hdrAverageColor: CUdeviceptr, + pub temporalModeUsePreviousLayers: ::std::os::raw::c_uint, } impl Default for OptixDenoiserParams { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -627,14 +923,13 @@ pub struct OptixDenoiserSizes { pub withOverlapScratchSizeInBytes: size_t, pub withoutOverlapScratchSizeInBytes: size_t, pub overlapWindowSizeInPixels: ::std::os::raw::c_uint, + pub computeAverageColorSizeInBytes: size_t, + pub computeIntensitySizeInBytes: size_t, + pub internalGuideLayerPixelSizeInBytes: size_t, } impl Default for OptixDenoiserSizes { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub const OptixRayFlags_OPTIX_RAY_FLAG_NONE: OptixRayFlags = 0; @@ -646,6 +941,7 @@ pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_BACK_FACING_TRIANGLES: OptixRayFlags pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES: OptixRayFlags = 32; pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_DISABLED_ANYHIT: OptixRayFlags = 64; pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_ENFORCED_ANYHIT: OptixRayFlags = 128; +pub const OptixRayFlags_OPTIX_RAY_FLAG_FORCE_OPACITY_MICROMAP_2_STATE: OptixRayFlags = 1024; pub type OptixRayFlags = ::std::os::raw::c_int; pub const OptixTransformType_OPTIX_TRANSFORM_TYPE_NONE: OptixTransformType = 0; pub const OptixTransformType_OPTIX_TRANSFORM_TYPE_STATIC_TRANSFORM: OptixTransformType = 1; @@ -671,9 +967,20 @@ pub mod OptixCompileDebugLevel { pub type Type = ::std::os::raw::c_int; pub const OPTIX_COMPILE_DEBUG_LEVEL_DEFAULT: Type = 0; pub const OPTIX_COMPILE_DEBUG_LEVEL_NONE: Type = 9040; - pub const OPTIX_COMPILE_DEBUG_LEVEL_LINEINFO: Type = 9041; + pub const OPTIX_COMPILE_DEBUG_LEVEL_MINIMAL: Type = 9041; + pub const OPTIX_COMPILE_DEBUG_LEVEL_MODERATE: Type = 9043; pub const OPTIX_COMPILE_DEBUG_LEVEL_FULL: Type = 9042; } +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_NOT_STARTED: OptixModuleCompileState = + 9056; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_STARTED: OptixModuleCompileState = + 9057; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_IMPENDING_FAILURE: + OptixModuleCompileState = 9058; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_FAILED: OptixModuleCompileState = 9059; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_COMPLETED: OptixModuleCompileState = + 9060; +pub type OptixModuleCompileState = ::std::os::raw::c_int; #[repr(C)] pub struct OptixModuleCompileBoundValueEntry { pub pipelineParamOffsetInBytes: size_t, @@ -683,11 +990,53 @@ pub struct OptixModuleCompileBoundValueEntry { } impl Default for OptixModuleCompileBoundValueEntry { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_DEFAULT: OptixPayloadTypeID = 0; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_0: OptixPayloadTypeID = 1; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_1: OptixPayloadTypeID = 2; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_2: OptixPayloadTypeID = 4; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_3: OptixPayloadTypeID = 8; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_4: OptixPayloadTypeID = 16; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_5: OptixPayloadTypeID = 32; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_6: OptixPayloadTypeID = 64; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_7: OptixPayloadTypeID = 128; +pub type OptixPayloadTypeID = ::std::os::raw::c_int; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_NONE: OptixPayloadSemantics = + 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_READ: OptixPayloadSemantics = + 1; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_WRITE: OptixPayloadSemantics = + 2; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_READ_WRITE: + OptixPayloadSemantics = 3; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_READ: OptixPayloadSemantics = 4; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_WRITE: OptixPayloadSemantics = 8; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_READ_WRITE: OptixPayloadSemantics = 12; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_READ: OptixPayloadSemantics = 16; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_WRITE: OptixPayloadSemantics = 32; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_READ_WRITE: OptixPayloadSemantics = 48; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_READ: OptixPayloadSemantics = 64; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_WRITE: OptixPayloadSemantics = 128; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_READ_WRITE: OptixPayloadSemantics = 192; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_READ: OptixPayloadSemantics = 256; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_WRITE: OptixPayloadSemantics = 512; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_READ_WRITE: OptixPayloadSemantics = 768; +pub type OptixPayloadSemantics = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixPayloadType { + pub numPayloadValues: ::std::os::raw::c_uint, + pub payloadSemantics: *const ::std::os::raw::c_uint, +} +impl Default for OptixPayloadType { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -698,14 +1047,12 @@ pub struct OptixModuleCompileOptions { pub debugLevel: OptixCompileDebugLevel::Type, pub boundValues: *const OptixModuleCompileBoundValueEntry, pub numBoundValues: ::std::os::raw::c_uint, + pub numPayloadTypes: ::std::os::raw::c_uint, + pub payloadTypes: *const OptixPayloadType, } impl Default for OptixModuleCompileOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub mod OptixProgramGroupKind { @@ -726,11 +1073,7 @@ pub struct OptixProgramGroupSingleModule { } impl Default for OptixProgramGroupSingleModule { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -745,11 +1088,7 @@ pub struct OptixProgramGroupHitgroup { } impl Default for OptixProgramGroupHitgroup { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -762,11 +1101,7 @@ pub struct OptixProgramGroupCallables { } impl Default for OptixProgramGroupCallables { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -787,58 +1122,26 @@ pub union OptixProgramGroupDesc__bindgen_ty_1 { } impl Default for OptixProgramGroupDesc__bindgen_ty_1 { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } impl Default for OptixProgramGroupDesc { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct OptixProgramGroupOptions { - pub reserved: ::std::os::raw::c_int, + pub payloadType: *const OptixPayloadType, +} +impl Default for OptixProgramGroupOptions { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } } pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_STACK_OVERFLOW: OptixExceptionCodes = -1; pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRACE_DEPTH_EXCEEDED: OptixExceptionCodes = -2; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_DEPTH_EXCEEDED: OptixExceptionCodes = - -3; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_TRAVERSABLE: - OptixExceptionCodes = -5; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_MISS_SBT: OptixExceptionCodes = - -6; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_HIT_SBT: OptixExceptionCodes = - -7; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_UNSUPPORTED_PRIMITIVE_TYPE: OptixExceptionCodes = - -8; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_RAY: OptixExceptionCodes = -9; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_PARAMETER_MISMATCH: - OptixExceptionCodes = -10; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_BUILTIN_IS_MISMATCH: OptixExceptionCodes = -11; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_INVALID_SBT: OptixExceptionCodes = -12; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_NO_DC_SBT_RECORD: OptixExceptionCodes = - -13; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_NO_CC_SBT_RECORD: OptixExceptionCodes = - -14; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_UNSUPPORTED_SINGLE_LEVEL_GAS: - OptixExceptionCodes = -15; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_VALUE_ARGUMENT_0: OptixExceptionCodes = - -16; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_VALUE_ARGUMENT_1: OptixExceptionCodes = - -17; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_VALUE_ARGUMENT_2: OptixExceptionCodes = - -18; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_UNSUPPORTED_DATA_ACCESS: OptixExceptionCodes = - -32; pub type OptixExceptionCodes = ::std::os::raw::c_int; pub mod OptixExceptionFlags { pub type Type = ::std::os::raw::c_int; @@ -846,9 +1149,9 @@ pub mod OptixExceptionFlags { pub const OPTIX_EXCEPTION_FLAG_STACK_OVERFLOW: Type = 1; pub const OPTIX_EXCEPTION_FLAG_TRACE_DEPTH: Type = 2; pub const OPTIX_EXCEPTION_FLAG_USER: Type = 4; - pub const OPTIX_EXCEPTION_FLAG_DEBUG: Type = 8; } #[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct OptixPipelineCompileOptions { pub usesMotionBlur: ::std::os::raw::c_int, pub traversableGraphFlags: ::std::os::raw::c_uint, @@ -857,32 +1160,17 @@ pub struct OptixPipelineCompileOptions { pub exceptionFlags: ::std::os::raw::c_uint, pub pipelineLaunchParamsVariableName: *const ::std::os::raw::c_char, pub usesPrimitiveTypeFlags: ::std::os::raw::c_uint, - pub reserved: ::std::os::raw::c_uint, - pub reserved2: size_t, + pub allowOpacityMicromaps: ::std::os::raw::c_int, } impl Default for OptixPipelineCompileOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct OptixPipelineLinkOptions { pub maxTraceDepth: ::std::os::raw::c_uint, - pub debugLevel: OptixCompileDebugLevel::Type, -} -impl Default for OptixPipelineLinkOptions { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } } #[repr(C)] pub struct OptixShaderBindingTable { @@ -900,11 +1188,7 @@ pub struct OptixShaderBindingTable { } impl Default for OptixShaderBindingTable { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -936,14 +1220,12 @@ pub type OptixQueryFunctionTable_t = ::std::option::Option< pub struct OptixBuiltinISOptions { pub builtinISModuleType: OptixPrimitiveType, pub usesMotionBlur: ::std::os::raw::c_int, + pub buildFlags: ::std::os::raw::c_uint, + pub curveEndcapFlags: ::std::os::raw::c_uint, } impl Default for OptixBuiltinISOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } extern "C" { @@ -1042,17 +1324,36 @@ extern "C" { ) -> OptixResult; } extern "C" { - pub fn optixModuleCreateFromPTX( + pub fn optixModuleCreate( context: OptixDeviceContext, moduleCompileOptions: *const OptixModuleCompileOptions, pipelineCompileOptions: *const OptixPipelineCompileOptions, - PTX: *const ::std::os::raw::c_char, - PTXsize: size_t, + input: *const ::std::os::raw::c_char, + inputSize: size_t, logString: *mut ::std::os::raw::c_char, logStringSize: *mut size_t, module: *mut OptixModule, ) -> OptixResult; } +extern "C" { + pub fn optixModuleCreateWithTasks( + context: OptixDeviceContext, + moduleCompileOptions: *const OptixModuleCompileOptions, + pipelineCompileOptions: *const OptixPipelineCompileOptions, + input: *const ::std::os::raw::c_char, + inputSize: size_t, + logString: *mut ::std::os::raw::c_char, + logStringSize: *mut size_t, + module: *mut OptixModule, + firstTask: *mut OptixTask, + ) -> OptixResult; +} +extern "C" { + pub fn optixModuleGetCompilationState( + module: OptixModule, + state: *mut OptixModuleCompileState, + ) -> OptixResult; +} extern "C" { pub fn optixModuleDestroy(module: OptixModule) -> OptixResult; } @@ -1065,10 +1366,19 @@ extern "C" { builtinModule: *mut OptixModule, ) -> OptixResult; } +extern "C" { + pub fn optixTaskExecute( + task: OptixTask, + additionalTasks: *mut OptixTask, + maxNumAdditionalTasks: ::std::os::raw::c_uint, + numAdditionalTasksCreated: *mut ::std::os::raw::c_uint, + ) -> OptixResult; +} extern "C" { pub fn optixProgramGroupGetStackSize( programGroup: OptixProgramGroup, stackSizes: *mut OptixStackSizes, + pipeline: OptixPipeline, ) -> OptixResult; } extern "C" { @@ -1132,13 +1442,13 @@ extern "C" { pub fn optixAccelGetRelocationInfo( context: OptixDeviceContext, handle: OptixTraversableHandle, - info: *mut OptixAccelRelocationInfo, + info: *mut OptixRelocationInfo, ) -> OptixResult; } extern "C" { - pub fn optixAccelCheckRelocationCompatibility( + pub fn optixCheckRelocationCompatibility( context: OptixDeviceContext, - info: *const OptixAccelRelocationInfo, + info: *const OptixRelocationInfo, compatible: *mut ::std::os::raw::c_int, ) -> OptixResult; } @@ -1146,9 +1456,9 @@ extern "C" { pub fn optixAccelRelocate( context: OptixDeviceContext, stream: CUstream, - info: *const OptixAccelRelocationInfo, - instanceTraversableHandles: CUdeviceptr, - numInstanceTraversableHandles: size_t, + info: *const OptixRelocationInfo, + relocateInputs: *const OptixRelocateInput, + numRelocateInputs: size_t, targetAccel: CUdeviceptr, targetAccelSizeInBytes: size_t, targetHandle: *mut OptixTraversableHandle, @@ -1164,6 +1474,14 @@ extern "C" { outputHandle: *mut OptixTraversableHandle, ) -> OptixResult; } +extern "C" { + pub fn optixAccelEmitProperty( + context: OptixDeviceContext, + stream: CUstream, + handle: OptixTraversableHandle, + emittedProperty: *const OptixAccelEmitDesc, + ) -> OptixResult; +} extern "C" { pub fn optixConvertPointerToTraversableHandle( onDevice: OptixDeviceContext, @@ -1172,6 +1490,52 @@ extern "C" { traversableHandle: *mut OptixTraversableHandle, ) -> OptixResult; } +extern "C" { + pub fn optixOpacityMicromapArrayComputeMemoryUsage( + context: OptixDeviceContext, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult; +} +extern "C" { + pub fn optixOpacityMicromapArrayBuild( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult; +} +extern "C" { + pub fn optixOpacityMicromapArrayGetRelocationInfo( + context: OptixDeviceContext, + opacityMicromapArray: CUdeviceptr, + info: *mut OptixRelocationInfo, + ) -> OptixResult; +} +extern "C" { + pub fn optixOpacityMicromapArrayRelocate( + context: OptixDeviceContext, + stream: CUstream, + info: *const OptixRelocationInfo, + targetOpacityMicromapArray: CUdeviceptr, + targetOpacityMicromapArraySizeInBytes: size_t, + ) -> OptixResult; +} +extern "C" { + pub fn optixDisplacementMicromapArrayComputeMemoryUsage( + context: OptixDeviceContext, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult; +} +extern "C" { + pub fn optixDisplacementMicromapArrayBuild( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult; +} extern "C" { pub fn optixDenoiserCreate( context: OptixDeviceContext, @@ -1320,16 +1684,35 @@ pub struct OptixFunctionTable { highWaterMark: *mut size_t, ) -> OptixResult, >, - pub optixModuleCreateFromPTX: ::std::option::Option< + pub optixModuleCreate: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + moduleCompileOptions: *const OptixModuleCompileOptions, + pipelineCompileOptions: *const OptixPipelineCompileOptions, + input: *const ::std::os::raw::c_char, + inputSize: size_t, + logString: *mut ::std::os::raw::c_char, + logStringSize: *mut size_t, + module: *mut OptixModule, + ) -> OptixResult, + >, + pub optixModuleCreateWithTasks: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, moduleCompileOptions: *const OptixModuleCompileOptions, pipelineCompileOptions: *const OptixPipelineCompileOptions, - PTX: *const ::std::os::raw::c_char, - PTXsize: size_t, + input: *const ::std::os::raw::c_char, + inputSize: size_t, logString: *mut ::std::os::raw::c_char, logStringSize: *mut size_t, module: *mut OptixModule, + firstTask: *mut OptixTask, + ) -> OptixResult, + >, + pub optixModuleGetCompilationState: ::std::option::Option< + unsafe extern "C" fn( + module: OptixModule, + state: *mut OptixModuleCompileState, ) -> OptixResult, >, pub optixModuleDestroy: @@ -1343,6 +1726,14 @@ pub struct OptixFunctionTable { builtinModule: *mut OptixModule, ) -> OptixResult, >, + pub optixTaskExecute: ::std::option::Option< + unsafe extern "C" fn( + task: OptixTask, + additionalTasks: *mut OptixTask, + maxNumAdditionalTasks: ::std::os::raw::c_uint, + numAdditionalTasksCreated: *mut ::std::os::raw::c_uint, + ) -> OptixResult, + >, pub optixProgramGroupCreate: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, @@ -1360,6 +1751,7 @@ pub struct OptixFunctionTable { unsafe extern "C" fn( programGroup: OptixProgramGroup, stackSizes: *mut OptixStackSizes, + pipeline: OptixPipeline, ) -> OptixResult, >, pub optixPipelineCreate: ::std::option::Option< @@ -1414,13 +1806,13 @@ pub struct OptixFunctionTable { unsafe extern "C" fn( context: OptixDeviceContext, handle: OptixTraversableHandle, - info: *mut OptixAccelRelocationInfo, + info: *mut OptixRelocationInfo, ) -> OptixResult, >, - pub optixAccelCheckRelocationCompatibility: ::std::option::Option< + pub optixCheckRelocationCompatibility: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, - info: *const OptixAccelRelocationInfo, + info: *const OptixRelocationInfo, compatible: *mut ::std::os::raw::c_int, ) -> OptixResult, >, @@ -1428,9 +1820,9 @@ pub struct OptixFunctionTable { unsafe extern "C" fn( context: OptixDeviceContext, stream: CUstream, - info: *const OptixAccelRelocationInfo, - instanceTraversableHandles: CUdeviceptr, - numInstanceTraversableHandles: size_t, + info: *const OptixRelocationInfo, + relocateInputs: *const OptixRelocateInput, + numRelocateInputs: size_t, targetAccel: CUdeviceptr, targetAccelSizeInBytes: size_t, targetHandle: *mut OptixTraversableHandle, @@ -1446,6 +1838,14 @@ pub struct OptixFunctionTable { outputHandle: *mut OptixTraversableHandle, ) -> OptixResult, >, + pub optixAccelEmitProperty: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + handle: OptixTraversableHandle, + emittedProperty: *const OptixAccelEmitDesc, + ) -> OptixResult, + >, pub optixConvertPointerToTraversableHandle: ::std::option::Option< unsafe extern "C" fn( onDevice: OptixDeviceContext, @@ -1454,6 +1854,52 @@ pub struct OptixFunctionTable { traversableHandle: *mut OptixTraversableHandle, ) -> OptixResult, >, + pub optixOpacityMicromapArrayComputeMemoryUsage: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult, + >, + pub optixOpacityMicromapArrayBuild: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult, + >, + pub optixOpacityMicromapArrayGetRelocationInfo: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + opacityMicromapArray: CUdeviceptr, + info: *mut OptixRelocationInfo, + ) -> OptixResult, + >, + pub optixOpacityMicromapArrayRelocate: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + info: *const OptixRelocationInfo, + targetOpacityMicromapArray: CUdeviceptr, + targetOpacityMicromapArraySizeInBytes: size_t, + ) -> OptixResult, + >, + pub optixDisplacementMicromapArrayComputeMemoryUsage: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult, + >, + pub optixDisplacementMicromapArrayBuild: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult, + >, pub optixSbtRecordPackHeader: ::std::option::Option< unsafe extern "C" fn( programGroup: OptixProgramGroup, @@ -1472,6 +1918,10 @@ pub struct OptixFunctionTable { depth: ::std::os::raw::c_uint, ) -> OptixResult, >, + pub optixPlaceholder001: + ::std::option::Option OptixResult>, + pub optixPlaceholder002: + ::std::option::Option OptixResult>, pub optixDenoiserCreate: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, @@ -1554,7 +2004,7 @@ pub const OptixInstanceByteAlignment: size_t = 16; pub const OptixAabbBufferByteAlignment: size_t = 8; pub const OptixGeometryTransformByteAlignment: size_t = 16; pub const OptixTransformByteAlignment: size_t = 64; -pub const OptixVersion: size_t = 70300; +pub const OptixVersion: size_t = 80100; pub const OptixBuildInputSize: size_t = 1032; pub const OptixShaderBindingTableSize: size_t = 64; #[repr(i32)] diff --git a/examples/cuda/cpu/path_tracer/Cargo.toml b/examples/cuda/cpu/path_tracer/Cargo.toml index 14c1987d..077b59c8 100644 --- a/examples/cuda/cpu/path_tracer/Cargo.toml +++ b/examples/cuda/cpu/path_tracer/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" vek = { version = "0.17.1", features = ["bytemuck", "mint"] } bytemuck = { version = "1.21", features = ["derive"] } cust = { version = "0.3", path = "../../../../crates/cust", features = ["impl_vek"] } -image = "0.25.5" +image = "0.23" path_tracer_gpu = { path = "../../gpu/path_tracer_gpu" } gpu_rand = { version = "0.1", path = "../../../../crates/gpu_rand" } optix = { version = "0.1", path = "../../../../crates/optix" } @@ -17,7 +17,7 @@ imgui = "0.8.0" imgui-glium-renderer = "0.8.0" imgui-winit-support = "0.8.0" rayon = "1.10" -sysinfo = "0.33.1" +sysinfo = "0.30" anyhow = "1.0.53" [build-dependencies] diff --git a/examples/optix/denoiser/Cargo.toml b/examples/optix/denoiser/Cargo.toml index 134beb20..47157b41 100644 --- a/examples/optix/denoiser/Cargo.toml +++ b/examples/optix/denoiser/Cargo.toml @@ -7,5 +7,5 @@ edition = "2021" optix = { version = "0.1", path = "../../../crates/optix" } structopt = "0.3" cust = { version = "0.3", path = "../../../crates/cust", features = ["impl_vek", "bytemuck"] } -image = "0.25.5" +image = "0.23" vek = { version = "0.17.1", features = ["bytemuck"] } diff --git a/rust-toolchain b/rust-toolchain index 4937196f..3d3bbe01 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -5,5 +5,5 @@ # to the user in the error, instead of "error: invalid channel name '[toolchain]'". [toolchain] -channel = "nightly-2025-01-23" +channel = "nightly-2023-04-15" components = ["rust-src", "rustc-dev", "llvm-tools-preview"] \ No newline at end of file From 734345563da9b7c75f21e8227c77c054be8457f3 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 8 Mar 2025 12:37:53 -0500 Subject: [PATCH 09/16] The method try_fill_bytes is no longer a member of RngCore, so it has been removed in all these places --- crates/gpu_rand/src/default.rs | 6 +++--- crates/gpu_rand/src/xoroshiro/splitmix64.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs | 5 ----- crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs | 5 ----- crates/optix/examples/ex03_window/build.rs | 6 +++--- 17 files changed, 6 insertions(+), 81 deletions(-) diff --git a/crates/gpu_rand/src/default.rs b/crates/gpu_rand/src/default.rs index 67faf11a..2bef5c3b 100644 --- a/crates/gpu_rand/src/default.rs +++ b/crates/gpu_rand/src/default.rs @@ -38,9 +38,9 @@ impl RngCore for DefaultRand { self.inner.fill_bytes(dest) } - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> { - self.inner.try_fill_bytes(dest) - } + // fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> { + // self.inner.try_fill_bytes(dest) + // } } impl SeedableRng for DefaultRand { diff --git a/crates/gpu_rand/src/xoroshiro/splitmix64.rs b/crates/gpu_rand/src/xoroshiro/splitmix64.rs index 64217351..c9b2dbbc 100644 --- a/crates/gpu_rand/src/xoroshiro/splitmix64.rs +++ b/crates/gpu_rand/src/xoroshiro/splitmix64.rs @@ -50,11 +50,6 @@ impl RngCore for SplitMix64 { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } impl SeedableRng for SplitMix64 { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs index 42b62547..bf88602c 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs @@ -79,11 +79,6 @@ impl RngCore for Xoroshiro128Plus { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> { - self.fill_bytes(dest); - Ok(()) - } } impl SeedableRng for Xoroshiro128Plus { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs index 9cbc1054..9ccb0e54 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs @@ -76,11 +76,6 @@ impl RngCore for Xoroshiro128PlusPlus { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> { - self.fill_bytes(dest); - Ok(()) - } } impl SeedableRng for Xoroshiro128PlusPlus { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs index 13a6d243..27545153 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs @@ -76,11 +76,6 @@ impl RngCore for Xoroshiro128StarStar { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> { - self.fill_bytes(dest); - Ok(()) - } } impl SeedableRng for Xoroshiro128StarStar { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs index fdcc76e0..7de4881b 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs @@ -39,11 +39,6 @@ impl RngCore for Xoroshiro64Star { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> { - self.fill_bytes(dest); - Ok(()) - } } impl SeedableRng for Xoroshiro64Star { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs index ca064f69..f97e351d 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs @@ -38,11 +38,6 @@ impl RngCore for Xoroshiro64StarStar { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> { - self.fill_bytes(dest); - Ok(()) - } } impl SeedableRng for Xoroshiro64StarStar { diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs index 7ad6d1e7..6e6640f0 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs @@ -85,11 +85,6 @@ impl RngCore for Xoshiro128Plus { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs index 8f37c55a..9be707d5 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs @@ -93,11 +93,6 @@ impl RngCore for Xoshiro128PlusPlus { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs index bf61d602..bb402d74 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs @@ -93,11 +93,6 @@ impl RngCore for Xoshiro128StarStar { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs index e4545be7..db2e9e68 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs @@ -114,11 +114,6 @@ impl RngCore for Xoshiro256Plus { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs index 2e2c5157..23ea59ff 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs @@ -113,11 +113,6 @@ impl RngCore for Xoshiro256PlusPlus { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs index b19ce6ee..f49af4b7 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs @@ -113,11 +113,6 @@ impl RngCore for Xoshiro256StarStar { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs index 9f6550ae..0b3c5097 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs @@ -124,11 +124,6 @@ impl RngCore for Xoshiro512Plus { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs index 25af5f79..6c6bad0c 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs @@ -123,11 +123,6 @@ impl RngCore for Xoshiro512PlusPlus { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs index 476ffecc..a1431579 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs @@ -123,11 +123,6 @@ impl RngCore for Xoshiro512StarStar { fill_bytes_via_next(self, dest); } - #[inline] - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - self.fill_bytes(dest); - Ok(()) - } } #[cfg(test)] diff --git a/crates/optix/examples/ex03_window/build.rs b/crates/optix/examples/ex03_window/build.rs index 7a7bdade..17f4ec5c 100644 --- a/crates/optix/examples/ex03_window/build.rs +++ b/crates/optix/examples/ex03_window/build.rs @@ -36,7 +36,7 @@ fn compile_to_ptx(cu_path: &str, args: &[String]) { .output() .expect("failed to fun nvcc"); - if !output.status.success() { - panic!("{}", unsafe { String::from_utf8_unchecked(output.stderr) }); - } + // if !output.status.success() { + // panic!("{}", unsafe { String::from_utf8_unchecked(output.stderr) }); + // } } From 554f82d27e2ef9e15494242268e29358b596578b Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 8 Mar 2025 12:39:40 -0500 Subject: [PATCH 10/16] Error is no longer a part of rand_core, so it has been removed from all files --- crates/gpu_rand/src/xoroshiro/splitmix64.rs | 2 +- crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs | 2 +- crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs | 2 +- crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs | 2 +- crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs | 2 +- crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs | 2 +- crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs | 2 +- crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs | 2 +- crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs | 2 +- crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crates/gpu_rand/src/xoroshiro/splitmix64.rs b/crates/gpu_rand/src/xoroshiro/splitmix64.rs index c9b2dbbc..e2748917 100644 --- a/crates/gpu_rand/src/xoroshiro/splitmix64.rs +++ b/crates/gpu_rand/src/xoroshiro/splitmix64.rs @@ -1,6 +1,6 @@ use rand_core::impls::fill_bytes_via_next; use rand_core::le::read_u64_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; /// A splitmix64 random number generator. /// diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs index 6e6640f0..5e406eee 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs @@ -1,6 +1,6 @@ use rand_core::impls::{fill_bytes_via_next, next_u64_via_u32}; use rand_core::le::read_u32_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; /// A xoshiro128+ random number generator. /// diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs index 9be707d5..aa5b6f31 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs @@ -1,6 +1,6 @@ use rand_core::impls::{fill_bytes_via_next, next_u64_via_u32}; use rand_core::le::read_u32_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; /// A xoshiro128++ random number generator. /// diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs index bb402d74..62c51db8 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs @@ -1,6 +1,6 @@ use rand_core::impls::{fill_bytes_via_next, next_u64_via_u32}; use rand_core::le::read_u32_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; /// A xoshiro128** random number generator. /// diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs index db2e9e68..96576664 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs @@ -1,6 +1,6 @@ use rand_core::impls::fill_bytes_via_next; use rand_core::le::read_u64_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; /// A xoshiro256+ random number generator. /// diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs index 23ea59ff..2855e08c 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs @@ -1,6 +1,6 @@ use rand_core::impls::fill_bytes_via_next; use rand_core::le::read_u64_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; /// A xoshiro256++ random number generator. /// diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs index f49af4b7..b7904ac3 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs @@ -1,6 +1,6 @@ use rand_core::impls::fill_bytes_via_next; use rand_core::le::read_u64_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; /// A xoshiro256** random number generator. /// diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs index 0b3c5097..beedbe39 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs @@ -1,6 +1,6 @@ use rand_core::impls::fill_bytes_via_next; use rand_core::le::read_u64_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; use crate::xoroshiro::Seed512; diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs index 6c6bad0c..d582593e 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs @@ -1,6 +1,6 @@ use rand_core::impls::fill_bytes_via_next; use rand_core::le::read_u64_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; use crate::xoroshiro::Seed512; diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs index a1431579..4edaa022 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs @@ -1,6 +1,6 @@ use rand_core::impls::fill_bytes_via_next; use rand_core::le::read_u64_into; -use rand_core::{Error, RngCore, SeedableRng}; +use rand_core::{RngCore, SeedableRng}; use crate::xoroshiro::Seed512; From cab3ddc81d4c80679a0825db2554edff845cf322 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 8 Mar 2025 12:41:31 -0500 Subject: [PATCH 11/16] the unwrap is no longer necessary, the method from_rng returns the rng object directly --- crates/gpu_rand/src/xoroshiro/common.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/gpu_rand/src/xoroshiro/common.rs b/crates/gpu_rand/src/xoroshiro/common.rs index 8c3001dd..1adc6ad9 100644 --- a/crates/gpu_rand/src/xoroshiro/common.rs +++ b/crates/gpu_rand/src/xoroshiro/common.rs @@ -2,7 +2,7 @@ macro_rules! from_splitmix { ($seed:expr) => {{ let mut rng = crate::xoroshiro::SplitMix64::seed_from_u64($seed); - Self::from_rng(&mut rng).unwrap() + Self::from_rng(&mut rng) }}; } From 2961efdfd290ad201d076fb951cd3431ffeeccc8 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 8 Mar 2025 12:46:06 -0500 Subject: [PATCH 12/16] Needed to implement AsRef<[u8]> for Seed512. This trait is required to implement other traits inside rand. Tested, and everything compiles --- crates/gpu_rand/src/xoroshiro/common.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/gpu_rand/src/xoroshiro/common.rs b/crates/gpu_rand/src/xoroshiro/common.rs index 1adc6ad9..2e971c6b 100644 --- a/crates/gpu_rand/src/xoroshiro/common.rs +++ b/crates/gpu_rand/src/xoroshiro/common.rs @@ -327,3 +327,9 @@ impl AsMut<[u8]> for Seed512 { &mut self.0 } } + +impl AsRef<[u8]> for Seed512 { + fn as_ref(&self) -> &[u8] { + return &self.0; + } +} From 49235ca8501b1922d05af166fe570b77bedf1c3f Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 8 Mar 2025 12:54:16 -0500 Subject: [PATCH 13/16] undoing a change that was not meant to be committed --- crates/optix/examples/ex03_window/build.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/optix/examples/ex03_window/build.rs b/crates/optix/examples/ex03_window/build.rs index 17f4ec5c..7a7bdade 100644 --- a/crates/optix/examples/ex03_window/build.rs +++ b/crates/optix/examples/ex03_window/build.rs @@ -36,7 +36,7 @@ fn compile_to_ptx(cu_path: &str, args: &[String]) { .output() .expect("failed to fun nvcc"); - // if !output.status.success() { - // panic!("{}", unsafe { String::from_utf8_unchecked(output.stderr) }); - // } + if !output.status.success() { + panic!("{}", unsafe { String::from_utf8_unchecked(output.stderr) }); + } } From adf5b6085fb90384bcf2b3a80c414469e0360722 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 8 Mar 2025 12:32:30 -0500 Subject: [PATCH 14/16] update toolchain to 2023-04-15, the same as the most recent release of rust-gpu. Also updated crate dependencies to be compatible with this release. Using this toolchain means we're stuck to an older version of bindgen. In newer versions of llvm, characters for identifiers of files are emitted that bindgen says are invalid. This was fixed in bindgen 0.62, but since we're on 0.58, we don't have that bug fix and need to use llvm version 15 or older --- crates/optix/Cargo.toml | 2 +- crates/optix/optix_wrapper.rs | 834 +++++++++++++++++------ examples/cuda/cpu/path_tracer/Cargo.toml | 4 +- examples/optix/denoiser/Cargo.toml | 2 +- rust-toolchain | 2 +- 5 files changed, 647 insertions(+), 197 deletions(-) diff --git a/crates/optix/Cargo.toml b/crates/optix/Cargo.toml index 815e4bbe..87e05c0a 100644 --- a/crates/optix/Cargo.toml +++ b/crates/optix/Cargo.toml @@ -27,7 +27,7 @@ mint = "0.5.9" embed-doc-image = {version = "0.1.4"} [build-dependencies] -bindgen = "0.59" +bindgen = "0.58" cc = "1.0.71" find_cuda_helper = { version = "0.2", path = "../find_cuda_helper" } diff --git a/crates/optix/optix_wrapper.rs b/crates/optix/optix_wrapper.rs index 24bad9e9..fc640433 100644 --- a/crates/optix/optix_wrapper.rs +++ b/crates/optix/optix_wrapper.rs @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.58.1 */ #[repr(C)] pub struct __BindgenUnionField(::std::marker::PhantomData); @@ -73,6 +73,12 @@ pub struct OptixDenoiser_t { _unused: [u8; 0], } pub type OptixDenoiser = *mut OptixDenoiser_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct OptixTask_t { + _unused: [u8; 0], +} +pub type OptixTask = *mut OptixTask_t; pub type OptixTraversableHandle = ::std::os::raw::c_ulonglong; pub type OptixVisibilityMask = ::std::os::raw::c_uint; impl OptixResult { @@ -118,7 +124,7 @@ impl OptixResult { pub const OPTIX_ERROR_VALIDATION_FAILURE: OptixResult = OptixResult(7053); } impl OptixResult { - pub const OPTIX_ERROR_INVALID_PTX: OptixResult = OptixResult(7200); + pub const OPTIX_ERROR_INVALID_INPUT: OptixResult = OptixResult(7200); } impl OptixResult { pub const OPTIX_ERROR_INVALID_LAUNCH_PARAMETER: OptixResult = OptixResult(7201); @@ -154,7 +160,16 @@ impl OptixResult { pub const OPTIX_ERROR_DENOISER_NOT_INITIALIZED: OptixResult = OptixResult(7301); } impl OptixResult { - pub const OPTIX_ERROR_ACCEL_NOT_COMPATIBLE: OptixResult = OptixResult(7400); + pub const OPTIX_ERROR_NOT_COMPATIBLE: OptixResult = OptixResult(7400); +} +impl OptixResult { + pub const OPTIX_ERROR_PAYLOAD_TYPE_MISMATCH: OptixResult = OptixResult(7500); +} +impl OptixResult { + pub const OPTIX_ERROR_PAYLOAD_TYPE_RESOLUTION_FAILED: OptixResult = OptixResult(7501); +} +impl OptixResult { + pub const OPTIX_ERROR_PAYLOAD_TYPE_ID_INVALID: OptixResult = OptixResult(7502); } impl OptixResult { pub const OPTIX_ERROR_NOT_SUPPORTED: OptixResult = OptixResult(7800); @@ -177,6 +192,9 @@ impl OptixResult { impl OptixResult { pub const OPTIX_ERROR_LIBRARY_UNLOAD_FAILURE: OptixResult = OptixResult(7806); } +impl OptixResult { + pub const OPTIX_ERROR_DEVICE_OUT_OF_MEMORY: OptixResult = OptixResult(7807); +} impl OptixResult { pub const OPTIX_ERROR_CUDA_ERROR: OptixResult = OptixResult(7900); } @@ -200,6 +218,7 @@ pub mod OptixDeviceProperty { pub const OPTIX_DEVICE_PROPERTY_LIMIT_NUM_BITS_INSTANCE_VISIBILITY_MASK: Type = 8199; pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_RECORDS_PER_GAS: Type = 8200; pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_OFFSET: Type = 8201; + pub const OPTIX_DEVICE_PROPERTY_SHADER_EXECUTION_REORDERING: Type = 8202; } pub type OptixLogCallback = ::std::option::Option< unsafe extern "C" fn( @@ -224,17 +243,17 @@ pub struct OptixDeviceContextOptions { } impl Default for OptixDeviceContextOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } +pub const OptixDevicePropertyShaderExecutionReorderingFlags_OPTIX_DEVICE_PROPERTY_SHADER_EXECUTION_REORDERING_FLAG_NONE : OptixDevicePropertyShaderExecutionReorderingFlags = 0 ; +pub const OptixDevicePropertyShaderExecutionReorderingFlags_OPTIX_DEVICE_PROPERTY_SHADER_EXECUTION_REORDERING_FLAG_STANDARD : OptixDevicePropertyShaderExecutionReorderingFlags = 1 ; +pub type OptixDevicePropertyShaderExecutionReorderingFlags = ::std::os::raw::c_int; pub const OptixHitKind_OPTIX_HIT_KIND_TRIANGLE_FRONT_FACE: OptixHitKind = 254; pub const OptixHitKind_OPTIX_HIT_KIND_TRIANGLE_BACK_FACE: OptixHitKind = 255; pub type OptixHitKind = ::std::os::raw::c_int; pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_NONE: OptixIndicesFormat = 0; +pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_BYTE3: OptixIndicesFormat = 8449; pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_SHORT3: OptixIndicesFormat = 8450; pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_INT3: OptixIndicesFormat = 8451; pub type OptixIndicesFormat = ::std::os::raw::c_int; @@ -249,6 +268,155 @@ pub type OptixVertexFormat = ::std::os::raw::c_int; pub const OptixTransformFormat_OPTIX_TRANSFORM_FORMAT_NONE: OptixTransformFormat = 0; pub const OptixTransformFormat_OPTIX_TRANSFORM_FORMAT_MATRIX_FLOAT12: OptixTransformFormat = 8673; pub type OptixTransformFormat = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapBiasAndScaleFormat_OPTIX_DISPLACEMENT_MICROMAP_BIAS_AND_SCALE_FORMAT_NONE : OptixDisplacementMicromapBiasAndScaleFormat = 0 ; +pub const OptixDisplacementMicromapBiasAndScaleFormat_OPTIX_DISPLACEMENT_MICROMAP_BIAS_AND_SCALE_FORMAT_FLOAT2 : OptixDisplacementMicromapBiasAndScaleFormat = 8769 ; +pub const OptixDisplacementMicromapBiasAndScaleFormat_OPTIX_DISPLACEMENT_MICROMAP_BIAS_AND_SCALE_FORMAT_HALF2 : OptixDisplacementMicromapBiasAndScaleFormat = 8770 ; +pub type OptixDisplacementMicromapBiasAndScaleFormat = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapDirectionFormat_OPTIX_DISPLACEMENT_MICROMAP_DIRECTION_FORMAT_NONE : OptixDisplacementMicromapDirectionFormat = 0 ; +pub const OptixDisplacementMicromapDirectionFormat_OPTIX_DISPLACEMENT_MICROMAP_DIRECTION_FORMAT_FLOAT3 : OptixDisplacementMicromapDirectionFormat = 8801 ; +pub const OptixDisplacementMicromapDirectionFormat_OPTIX_DISPLACEMENT_MICROMAP_DIRECTION_FORMAT_HALF3 : OptixDisplacementMicromapDirectionFormat = 8802 ; +pub type OptixDisplacementMicromapDirectionFormat = ::std::os::raw::c_int; +pub const OptixOpacityMicromapFormat_OPTIX_OPACITY_MICROMAP_FORMAT_NONE: + OptixOpacityMicromapFormat = 0; +pub const OptixOpacityMicromapFormat_OPTIX_OPACITY_MICROMAP_FORMAT_2_STATE: + OptixOpacityMicromapFormat = 1; +pub const OptixOpacityMicromapFormat_OPTIX_OPACITY_MICROMAP_FORMAT_4_STATE: + OptixOpacityMicromapFormat = 2; +pub type OptixOpacityMicromapFormat = ::std::os::raw::c_int; +pub const OptixOpacityMicromapArrayIndexingMode_OPTIX_OPACITY_MICROMAP_ARRAY_INDEXING_MODE_NONE: + OptixOpacityMicromapArrayIndexingMode = 0; +pub const OptixOpacityMicromapArrayIndexingMode_OPTIX_OPACITY_MICROMAP_ARRAY_INDEXING_MODE_LINEAR : OptixOpacityMicromapArrayIndexingMode = 1 ; +pub const OptixOpacityMicromapArrayIndexingMode_OPTIX_OPACITY_MICROMAP_ARRAY_INDEXING_MODE_INDEXED : OptixOpacityMicromapArrayIndexingMode = 2 ; +pub type OptixOpacityMicromapArrayIndexingMode = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixOpacityMicromapUsageCount { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixOpacityMicromapFormat, +} +impl Default for OptixOpacityMicromapUsageCount { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixBuildInputOpacityMicromap { + pub indexingMode: OptixOpacityMicromapArrayIndexingMode, + pub opacityMicromapArray: CUdeviceptr, + pub indexBuffer: CUdeviceptr, + pub indexSizeInBytes: ::std::os::raw::c_uint, + pub indexStrideInBytes: ::std::os::raw::c_uint, + pub indexOffset: ::std::os::raw::c_uint, + pub numMicromapUsageCounts: ::std::os::raw::c_uint, + pub micromapUsageCounts: *const OptixOpacityMicromapUsageCount, +} +impl Default for OptixBuildInputOpacityMicromap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInputOpacityMicromap { + pub opacityMicromapArray: CUdeviceptr, +} +impl Default for OptixRelocateInputOpacityMicromap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_NONE: + OptixDisplacementMicromapFormat = 0; +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_64_MICRO_TRIS_64_BYTES : OptixDisplacementMicromapFormat = 1 ; +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_256_MICRO_TRIS_128_BYTES : OptixDisplacementMicromapFormat = 2 ; +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_1024_MICRO_TRIS_128_BYTES : OptixDisplacementMicromapFormat = 3 ; +pub type OptixDisplacementMicromapFormat = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapFlags_OPTIX_DISPLACEMENT_MICROMAP_FLAG_NONE: + OptixDisplacementMicromapFlags = 0; +pub const OptixDisplacementMicromapFlags_OPTIX_DISPLACEMENT_MICROMAP_FLAG_PREFER_FAST_TRACE: + OptixDisplacementMicromapFlags = 1; +pub const OptixDisplacementMicromapFlags_OPTIX_DISPLACEMENT_MICROMAP_FLAG_PREFER_FAST_BUILD: + OptixDisplacementMicromapFlags = 2; +pub type OptixDisplacementMicromapFlags = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_NONE: + OptixDisplacementMicromapTriangleFlags = 0; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_DECIMATE_EDGE_01 : OptixDisplacementMicromapTriangleFlags = 1 ; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_DECIMATE_EDGE_12 : OptixDisplacementMicromapTriangleFlags = 2 ; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_DECIMATE_EDGE_20 : OptixDisplacementMicromapTriangleFlags = 4 ; +pub type OptixDisplacementMicromapTriangleFlags = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct OptixDisplacementMicromapDesc { + pub byteOffset: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_ushort, + pub format: ::std::os::raw::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixDisplacementMicromapHistogramEntry { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixDisplacementMicromapFormat, +} +impl Default for OptixDisplacementMicromapHistogramEntry { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixDisplacementMicromapArrayBuildInput { + pub flags: OptixDisplacementMicromapFlags, + pub displacementValuesBuffer: CUdeviceptr, + pub perDisplacementMicromapDescBuffer: CUdeviceptr, + pub perDisplacementMicromapDescStrideInBytes: ::std::os::raw::c_uint, + pub numDisplacementMicromapHistogramEntries: ::std::os::raw::c_uint, + pub displacementMicromapHistogramEntries: *const OptixDisplacementMicromapHistogramEntry, +} +impl Default for OptixDisplacementMicromapArrayBuildInput { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixDisplacementMicromapUsageCount { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixDisplacementMicromapFormat, +} +impl Default for OptixDisplacementMicromapUsageCount { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const OptixDisplacementMicromapArrayIndexingMode_OPTIX_DISPLACEMENT_MICROMAP_ARRAY_INDEXING_MODE_NONE : OptixDisplacementMicromapArrayIndexingMode = 0 ; +pub const OptixDisplacementMicromapArrayIndexingMode_OPTIX_DISPLACEMENT_MICROMAP_ARRAY_INDEXING_MODE_LINEAR : OptixDisplacementMicromapArrayIndexingMode = 1 ; +pub const OptixDisplacementMicromapArrayIndexingMode_OPTIX_DISPLACEMENT_MICROMAP_ARRAY_INDEXING_MODE_INDEXED : OptixDisplacementMicromapArrayIndexingMode = 2 ; +pub type OptixDisplacementMicromapArrayIndexingMode = ::std::os::raw::c_int; +#[repr(C)] +pub struct OptixBuildInputDisplacementMicromap { + pub indexingMode: OptixDisplacementMicromapArrayIndexingMode, + pub displacementMicromapArray: CUdeviceptr, + pub displacementMicromapIndexBuffer: CUdeviceptr, + pub vertexDirectionsBuffer: CUdeviceptr, + pub vertexBiasAndScaleBuffer: CUdeviceptr, + pub triangleFlagsBuffer: CUdeviceptr, + pub displacementMicromapIndexOffset: ::std::os::raw::c_uint, + pub displacementMicromapIndexStrideInBytes: ::std::os::raw::c_uint, + pub displacementMicromapIndexSizeInBytes: ::std::os::raw::c_uint, + pub vertexDirectionFormat: OptixDisplacementMicromapDirectionFormat, + pub vertexDirectionStrideInBytes: ::std::os::raw::c_uint, + pub vertexBiasAndScaleFormat: OptixDisplacementMicromapBiasAndScaleFormat, + pub vertexBiasAndScaleStrideInBytes: ::std::os::raw::c_uint, + pub triangleFlagsStrideInBytes: ::std::os::raw::c_uint, + pub numDisplacementMicromapUsageCounts: ::std::os::raw::c_uint, + pub displacementMicromapUsageCounts: *const OptixDisplacementMicromapUsageCount, +} +impl Default for OptixBuildInputDisplacementMicromap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} #[repr(C)] pub struct OptixBuildInputTriangleArray { pub vertexBuffers: *const CUdeviceptr, @@ -267,14 +435,22 @@ pub struct OptixBuildInputTriangleArray { pub sbtIndexOffsetStrideInBytes: ::std::os::raw::c_uint, pub primitiveIndexOffset: ::std::os::raw::c_uint, pub transformFormat: OptixTransformFormat, + pub opacityMicromap: OptixBuildInputOpacityMicromap, + pub displacementMicromap: OptixBuildInputDisplacementMicromap, } impl Default for OptixBuildInputTriangleArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInputTriangleArray { + pub numSbtRecords: ::std::os::raw::c_uint, + pub opacityMicromap: OptixRelocateInputOpacityMicromap, +} +impl Default for OptixRelocateInputTriangleArray { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_CUSTOM: OptixPrimitiveType = 9472; @@ -282,7 +458,13 @@ pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE: Optix 9473; pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BSPLINE: OptixPrimitiveType = 9474; pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR: OptixPrimitiveType = 9475; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_CATMULLROM: OptixPrimitiveType = 9476; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_FLAT_QUADRATIC_BSPLINE: OptixPrimitiveType = 9477; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_SPHERE: OptixPrimitiveType = 9478; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BEZIER: OptixPrimitiveType = 9479; pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_TRIANGLE: OptixPrimitiveType = 9521; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_DISPLACED_MICROMESH_TRIANGLE: OptixPrimitiveType = + 9522; pub type OptixPrimitiveType = ::std::os::raw::c_int; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_CUSTOM: OptixPrimitiveTypeFlags = 1; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_QUADRATIC_BSPLINE: @@ -291,9 +473,21 @@ pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CUBIC_BSPLINE OptixPrimitiveTypeFlags = 4; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_LINEAR: OptixPrimitiveTypeFlags = 8; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CATMULLROM: + OptixPrimitiveTypeFlags = 16; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_FLAT_QUADRATIC_BSPLINE: + OptixPrimitiveTypeFlags = 32; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_SPHERE: OptixPrimitiveTypeFlags = 64; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CUBIC_BEZIER: + OptixPrimitiveTypeFlags = 128; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_TRIANGLE: OptixPrimitiveTypeFlags = -2147483648; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_DISPLACED_MICROMESH_TRIANGLE: + OptixPrimitiveTypeFlags = 1073741824; pub type OptixPrimitiveTypeFlags = ::std::os::raw::c_int; +pub const OptixCurveEndcapFlags_OPTIX_CURVE_ENDCAP_DEFAULT: OptixCurveEndcapFlags = 0; +pub const OptixCurveEndcapFlags_OPTIX_CURVE_ENDCAP_ON: OptixCurveEndcapFlags = 1; +pub type OptixCurveEndcapFlags = ::std::os::raw::c_int; #[repr(C)] pub struct OptixBuildInputCurveArray { pub curveType: OptixPrimitiveType, @@ -309,14 +503,31 @@ pub struct OptixBuildInputCurveArray { pub indexStrideInBytes: ::std::os::raw::c_uint, pub flag: ::std::os::raw::c_uint, pub primitiveIndexOffset: ::std::os::raw::c_uint, + pub endcapFlags: ::std::os::raw::c_uint, } impl Default for OptixBuildInputCurveArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixBuildInputSphereArray { + pub vertexBuffers: *const CUdeviceptr, + pub vertexStrideInBytes: ::std::os::raw::c_uint, + pub numVertices: ::std::os::raw::c_uint, + pub radiusBuffers: *const CUdeviceptr, + pub radiusStrideInBytes: ::std::os::raw::c_uint, + pub singleRadius: ::std::os::raw::c_int, + pub flags: *const ::std::os::raw::c_uint, + pub numSbtRecords: ::std::os::raw::c_uint, + pub sbtIndexOffsetBuffer: CUdeviceptr, + pub sbtIndexOffsetSizeInBytes: ::std::os::raw::c_uint, + pub sbtIndexOffsetStrideInBytes: ::std::os::raw::c_uint, + pub primitiveIndexOffset: ::std::os::raw::c_uint, +} +impl Default for OptixBuildInputSphereArray { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -343,25 +554,28 @@ pub struct OptixBuildInputCustomPrimitiveArray { } impl Default for OptixBuildInputCustomPrimitiveArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] pub struct OptixBuildInputInstanceArray { pub instances: CUdeviceptr, pub numInstances: ::std::os::raw::c_uint, + pub instanceStride: ::std::os::raw::c_uint, } impl Default for OptixBuildInputInstanceArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInputInstanceArray { + pub numInstances: ::std::os::raw::c_uint, + pub traversableHandles: CUdeviceptr, +} +impl Default for OptixRelocateInputInstanceArray { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_TRIANGLES: OptixBuildInputType = 8513; @@ -369,11 +583,13 @@ pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_CUSTOM_PRIMITIVES: OptixBui pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_INSTANCES: OptixBuildInputType = 8515; pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_INSTANCE_POINTERS: OptixBuildInputType = 8516; pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_CURVES: OptixBuildInputType = 8517; +pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_SPHERES: OptixBuildInputType = 8518; pub type OptixBuildInputType = ::std::os::raw::c_int; #[repr(C)] pub struct OptixBuildInput__bindgen_ty_1 { pub triangleArray: __BindgenUnionField, pub curveArray: __BindgenUnionField, + pub sphereArray: __BindgenUnionField, pub customPrimitiveArray: __BindgenUnionField, pub instanceArray: __BindgenUnionField, pub pad: __BindgenUnionField<[::std::os::raw::c_char; 1024usize]>, @@ -381,11 +597,28 @@ pub struct OptixBuildInput__bindgen_ty_1 { } impl Default for OptixBuildInput__bindgen_ty_1 { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInput { + pub type_: OptixBuildInputType, + pub __bindgen_anon_1: OptixRelocateInput__bindgen_ty_1, +} +#[repr(C)] +pub struct OptixRelocateInput__bindgen_ty_1 { + pub instanceArray: __BindgenUnionField, + pub triangleArray: __BindgenUnionField, + pub bindgen_union_field: [u64; 2usize], +} +impl Default for OptixRelocateInput__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for OptixRelocateInput { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_NONE: OptixInstanceFlags = 0; @@ -394,7 +627,9 @@ pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_TRIANGLE_FACE_CULLING: pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_FLIP_TRIANGLE_FACING: OptixInstanceFlags = 2; pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_ANYHIT: OptixInstanceFlags = 4; pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_ENFORCE_ANYHIT: OptixInstanceFlags = 8; -pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_TRANSFORM: OptixInstanceFlags = 64; +pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_FORCE_OPACITY_MICROMAP_2_STATE: + OptixInstanceFlags = 16; +pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_OPACITY_MICROMAPS: OptixInstanceFlags = 32; pub type OptixInstanceFlags = ::std::os::raw::c_int; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -414,7 +649,70 @@ pub const OptixBuildFlags_OPTIX_BUILD_FLAG_PREFER_FAST_TRACE: OptixBuildFlags = pub const OptixBuildFlags_OPTIX_BUILD_FLAG_PREFER_FAST_BUILD: OptixBuildFlags = 8; pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_RANDOM_VERTEX_ACCESS: OptixBuildFlags = 16; pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_RANDOM_INSTANCE_ACCESS: OptixBuildFlags = 32; +pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_OPACITY_MICROMAP_UPDATE: OptixBuildFlags = 64; +pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_DISABLE_OPACITY_MICROMAPS: OptixBuildFlags = 128; pub type OptixBuildFlags = ::std::os::raw::c_int; +pub const OptixOpacityMicromapFlags_OPTIX_OPACITY_MICROMAP_FLAG_NONE: OptixOpacityMicromapFlags = 0; +pub const OptixOpacityMicromapFlags_OPTIX_OPACITY_MICROMAP_FLAG_PREFER_FAST_TRACE: + OptixOpacityMicromapFlags = 1; +pub const OptixOpacityMicromapFlags_OPTIX_OPACITY_MICROMAP_FLAG_PREFER_FAST_BUILD: + OptixOpacityMicromapFlags = 2; +pub type OptixOpacityMicromapFlags = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct OptixOpacityMicromapDesc { + pub byteOffset: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_ushort, + pub format: ::std::os::raw::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixOpacityMicromapHistogramEntry { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixOpacityMicromapFormat, +} +impl Default for OptixOpacityMicromapHistogramEntry { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixOpacityMicromapArrayBuildInput { + pub flags: ::std::os::raw::c_uint, + pub inputBuffer: CUdeviceptr, + pub perMicromapDescBuffer: CUdeviceptr, + pub perMicromapDescStrideInBytes: ::std::os::raw::c_uint, + pub numMicromapHistogramEntries: ::std::os::raw::c_uint, + pub micromapHistogramEntries: *const OptixOpacityMicromapHistogramEntry, +} +impl Default for OptixOpacityMicromapArrayBuildInput { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixMicromapBufferSizes { + pub outputSizeInBytes: size_t, + pub tempSizeInBytes: size_t, +} +impl Default for OptixMicromapBufferSizes { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixMicromapBuffers { + pub output: CUdeviceptr, + pub outputSizeInBytes: size_t, + pub temp: CUdeviceptr, + pub tempSizeInBytes: size_t, +} +impl Default for OptixMicromapBuffers { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} pub const OptixBuildOperation_OPTIX_BUILD_OPERATION_BUILD: OptixBuildOperation = 8545; pub const OptixBuildOperation_OPTIX_BUILD_OPERATION_UPDATE: OptixBuildOperation = 8546; pub type OptixBuildOperation = ::std::os::raw::c_int; @@ -439,11 +737,7 @@ pub struct OptixAccelBuildOptions { } impl Default for OptixAccelBuildOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -454,11 +748,7 @@ pub struct OptixAccelBufferSizes { } impl Default for OptixAccelBufferSizes { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub const OptixAccelPropertyType_OPTIX_PROPERTY_TYPE_COMPACTED_SIZE: OptixAccelPropertyType = 8577; @@ -471,16 +761,12 @@ pub struct OptixAccelEmitDesc { } impl Default for OptixAccelEmitDesc { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixAccelRelocationInfo { +pub struct OptixRelocationInfo { pub info: [::std::os::raw::c_ulonglong; 4usize], } #[repr(C)] @@ -535,14 +821,17 @@ pub const OptixTraversableType_OPTIX_TRAVERSABLE_TYPE_SRT_MOTION_TRANSFORM: Opti pub type OptixTraversableType = ::std::os::raw::c_int; pub mod OptixPixelFormat { pub type Type = ::std::os::raw::c_int; + pub const OPTIX_PIXEL_FORMAT_HALF1: Type = 8714; pub const OPTIX_PIXEL_FORMAT_HALF2: Type = 8711; pub const OPTIX_PIXEL_FORMAT_HALF3: Type = 8705; pub const OPTIX_PIXEL_FORMAT_HALF4: Type = 8706; + pub const OPTIX_PIXEL_FORMAT_FLOAT1: Type = 8715; pub const OPTIX_PIXEL_FORMAT_FLOAT2: Type = 8712; pub const OPTIX_PIXEL_FORMAT_FLOAT3: Type = 8707; pub const OPTIX_PIXEL_FORMAT_FLOAT4: Type = 8708; pub const OPTIX_PIXEL_FORMAT_UCHAR3: Type = 8709; pub const OPTIX_PIXEL_FORMAT_UCHAR4: Type = 8710; + pub const OPTIX_PIXEL_FORMAT_INTERNAL_GUIDE_LAYER: Type = 8713; } #[repr(C)] pub struct OptixImage2D { @@ -555,11 +844,7 @@ pub struct OptixImage2D { } impl Default for OptixImage2D { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub mod OptixDenoiserModelKind { @@ -568,57 +853,68 @@ pub mod OptixDenoiserModelKind { pub const OPTIX_DENOISER_MODEL_KIND_HDR: Type = 8995; pub const OPTIX_DENOISER_MODEL_KIND_AOV: Type = 8996; pub const OPTIX_DENOISER_MODEL_KIND_TEMPORAL: Type = 8997; + pub const OPTIX_DENOISER_MODEL_KIND_TEMPORAL_AOV: Type = 8998; + pub const OPTIX_DENOISER_MODEL_KIND_UPSCALE2X: Type = 8999; + pub const OPTIX_DENOISER_MODEL_KIND_TEMPORAL_UPSCALE2X: Type = 9000; } +pub const OptixDenoiserAlphaMode_OPTIX_DENOISER_ALPHA_MODE_COPY: OptixDenoiserAlphaMode = 0; +pub const OptixDenoiserAlphaMode_OPTIX_DENOISER_ALPHA_MODE_DENOISE: OptixDenoiserAlphaMode = 1; +pub type OptixDenoiserAlphaMode = ::std::os::raw::c_int; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct OptixDenoiserOptions { pub guideAlbedo: ::std::os::raw::c_uint, pub guideNormal: ::std::os::raw::c_uint, + pub denoiseAlpha: OptixDenoiserAlphaMode, +} +impl Default for OptixDenoiserOptions { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } } #[repr(C)] pub struct OptixDenoiserGuideLayer { pub albedo: OptixImage2D, pub normal: OptixImage2D, pub flow: OptixImage2D, + pub previousOutputInternalGuideLayer: OptixImage2D, + pub outputInternalGuideLayer: OptixImage2D, + pub flowTrustworthiness: OptixImage2D, } impl Default for OptixDenoiserGuideLayer { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_NONE: OptixDenoiserAOVType = 0; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_BEAUTY: OptixDenoiserAOVType = 28672; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_SPECULAR: OptixDenoiserAOVType = 28673; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_REFLECTION: OptixDenoiserAOVType = 28674; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_REFRACTION: OptixDenoiserAOVType = 28675; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_DIFFUSE: OptixDenoiserAOVType = 28676; +pub type OptixDenoiserAOVType = ::std::os::raw::c_int; #[repr(C)] pub struct OptixDenoiserLayer { pub input: OptixImage2D, pub previousOutput: OptixImage2D, pub output: OptixImage2D, + pub type_: OptixDenoiserAOVType, } impl Default for OptixDenoiserLayer { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] pub struct OptixDenoiserParams { - pub denoiseAlpha: ::std::os::raw::c_uint, pub hdrIntensity: CUdeviceptr, pub blendFactor: f32, pub hdrAverageColor: CUdeviceptr, + pub temporalModeUsePreviousLayers: ::std::os::raw::c_uint, } impl Default for OptixDenoiserParams { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -627,14 +923,13 @@ pub struct OptixDenoiserSizes { pub withOverlapScratchSizeInBytes: size_t, pub withoutOverlapScratchSizeInBytes: size_t, pub overlapWindowSizeInPixels: ::std::os::raw::c_uint, + pub computeAverageColorSizeInBytes: size_t, + pub computeIntensitySizeInBytes: size_t, + pub internalGuideLayerPixelSizeInBytes: size_t, } impl Default for OptixDenoiserSizes { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub const OptixRayFlags_OPTIX_RAY_FLAG_NONE: OptixRayFlags = 0; @@ -646,6 +941,7 @@ pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_BACK_FACING_TRIANGLES: OptixRayFlags pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES: OptixRayFlags = 32; pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_DISABLED_ANYHIT: OptixRayFlags = 64; pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_ENFORCED_ANYHIT: OptixRayFlags = 128; +pub const OptixRayFlags_OPTIX_RAY_FLAG_FORCE_OPACITY_MICROMAP_2_STATE: OptixRayFlags = 1024; pub type OptixRayFlags = ::std::os::raw::c_int; pub const OptixTransformType_OPTIX_TRANSFORM_TYPE_NONE: OptixTransformType = 0; pub const OptixTransformType_OPTIX_TRANSFORM_TYPE_STATIC_TRANSFORM: OptixTransformType = 1; @@ -671,9 +967,20 @@ pub mod OptixCompileDebugLevel { pub type Type = ::std::os::raw::c_int; pub const OPTIX_COMPILE_DEBUG_LEVEL_DEFAULT: Type = 0; pub const OPTIX_COMPILE_DEBUG_LEVEL_NONE: Type = 9040; - pub const OPTIX_COMPILE_DEBUG_LEVEL_LINEINFO: Type = 9041; + pub const OPTIX_COMPILE_DEBUG_LEVEL_MINIMAL: Type = 9041; + pub const OPTIX_COMPILE_DEBUG_LEVEL_MODERATE: Type = 9043; pub const OPTIX_COMPILE_DEBUG_LEVEL_FULL: Type = 9042; } +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_NOT_STARTED: OptixModuleCompileState = + 9056; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_STARTED: OptixModuleCompileState = + 9057; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_IMPENDING_FAILURE: + OptixModuleCompileState = 9058; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_FAILED: OptixModuleCompileState = 9059; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_COMPLETED: OptixModuleCompileState = + 9060; +pub type OptixModuleCompileState = ::std::os::raw::c_int; #[repr(C)] pub struct OptixModuleCompileBoundValueEntry { pub pipelineParamOffsetInBytes: size_t, @@ -683,11 +990,53 @@ pub struct OptixModuleCompileBoundValueEntry { } impl Default for OptixModuleCompileBoundValueEntry { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_DEFAULT: OptixPayloadTypeID = 0; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_0: OptixPayloadTypeID = 1; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_1: OptixPayloadTypeID = 2; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_2: OptixPayloadTypeID = 4; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_3: OptixPayloadTypeID = 8; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_4: OptixPayloadTypeID = 16; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_5: OptixPayloadTypeID = 32; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_6: OptixPayloadTypeID = 64; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_7: OptixPayloadTypeID = 128; +pub type OptixPayloadTypeID = ::std::os::raw::c_int; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_NONE: OptixPayloadSemantics = + 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_READ: OptixPayloadSemantics = + 1; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_WRITE: OptixPayloadSemantics = + 2; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_READ_WRITE: + OptixPayloadSemantics = 3; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_READ: OptixPayloadSemantics = 4; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_WRITE: OptixPayloadSemantics = 8; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_READ_WRITE: OptixPayloadSemantics = 12; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_READ: OptixPayloadSemantics = 16; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_WRITE: OptixPayloadSemantics = 32; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_READ_WRITE: OptixPayloadSemantics = 48; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_READ: OptixPayloadSemantics = 64; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_WRITE: OptixPayloadSemantics = 128; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_READ_WRITE: OptixPayloadSemantics = 192; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_READ: OptixPayloadSemantics = 256; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_WRITE: OptixPayloadSemantics = 512; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_READ_WRITE: OptixPayloadSemantics = 768; +pub type OptixPayloadSemantics = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixPayloadType { + pub numPayloadValues: ::std::os::raw::c_uint, + pub payloadSemantics: *const ::std::os::raw::c_uint, +} +impl Default for OptixPayloadType { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -698,14 +1047,12 @@ pub struct OptixModuleCompileOptions { pub debugLevel: OptixCompileDebugLevel::Type, pub boundValues: *const OptixModuleCompileBoundValueEntry, pub numBoundValues: ::std::os::raw::c_uint, + pub numPayloadTypes: ::std::os::raw::c_uint, + pub payloadTypes: *const OptixPayloadType, } impl Default for OptixModuleCompileOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub mod OptixProgramGroupKind { @@ -726,11 +1073,7 @@ pub struct OptixProgramGroupSingleModule { } impl Default for OptixProgramGroupSingleModule { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -745,11 +1088,7 @@ pub struct OptixProgramGroupHitgroup { } impl Default for OptixProgramGroupHitgroup { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -762,11 +1101,7 @@ pub struct OptixProgramGroupCallables { } impl Default for OptixProgramGroupCallables { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -787,58 +1122,26 @@ pub union OptixProgramGroupDesc__bindgen_ty_1 { } impl Default for OptixProgramGroupDesc__bindgen_ty_1 { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } impl Default for OptixProgramGroupDesc { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct OptixProgramGroupOptions { - pub reserved: ::std::os::raw::c_int, + pub payloadType: *const OptixPayloadType, +} +impl Default for OptixProgramGroupOptions { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } } pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_STACK_OVERFLOW: OptixExceptionCodes = -1; pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRACE_DEPTH_EXCEEDED: OptixExceptionCodes = -2; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_DEPTH_EXCEEDED: OptixExceptionCodes = - -3; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_TRAVERSABLE: - OptixExceptionCodes = -5; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_MISS_SBT: OptixExceptionCodes = - -6; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_HIT_SBT: OptixExceptionCodes = - -7; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_UNSUPPORTED_PRIMITIVE_TYPE: OptixExceptionCodes = - -8; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_RAY: OptixExceptionCodes = -9; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_PARAMETER_MISMATCH: - OptixExceptionCodes = -10; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_BUILTIN_IS_MISMATCH: OptixExceptionCodes = -11; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_INVALID_SBT: OptixExceptionCodes = -12; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_NO_DC_SBT_RECORD: OptixExceptionCodes = - -13; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_NO_CC_SBT_RECORD: OptixExceptionCodes = - -14; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_UNSUPPORTED_SINGLE_LEVEL_GAS: - OptixExceptionCodes = -15; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_VALUE_ARGUMENT_0: OptixExceptionCodes = - -16; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_VALUE_ARGUMENT_1: OptixExceptionCodes = - -17; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_VALUE_ARGUMENT_2: OptixExceptionCodes = - -18; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_UNSUPPORTED_DATA_ACCESS: OptixExceptionCodes = - -32; pub type OptixExceptionCodes = ::std::os::raw::c_int; pub mod OptixExceptionFlags { pub type Type = ::std::os::raw::c_int; @@ -846,9 +1149,9 @@ pub mod OptixExceptionFlags { pub const OPTIX_EXCEPTION_FLAG_STACK_OVERFLOW: Type = 1; pub const OPTIX_EXCEPTION_FLAG_TRACE_DEPTH: Type = 2; pub const OPTIX_EXCEPTION_FLAG_USER: Type = 4; - pub const OPTIX_EXCEPTION_FLAG_DEBUG: Type = 8; } #[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct OptixPipelineCompileOptions { pub usesMotionBlur: ::std::os::raw::c_int, pub traversableGraphFlags: ::std::os::raw::c_uint, @@ -857,32 +1160,17 @@ pub struct OptixPipelineCompileOptions { pub exceptionFlags: ::std::os::raw::c_uint, pub pipelineLaunchParamsVariableName: *const ::std::os::raw::c_char, pub usesPrimitiveTypeFlags: ::std::os::raw::c_uint, - pub reserved: ::std::os::raw::c_uint, - pub reserved2: size_t, + pub allowOpacityMicromaps: ::std::os::raw::c_int, } impl Default for OptixPipelineCompileOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct OptixPipelineLinkOptions { pub maxTraceDepth: ::std::os::raw::c_uint, - pub debugLevel: OptixCompileDebugLevel::Type, -} -impl Default for OptixPipelineLinkOptions { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } } #[repr(C)] pub struct OptixShaderBindingTable { @@ -900,11 +1188,7 @@ pub struct OptixShaderBindingTable { } impl Default for OptixShaderBindingTable { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -936,14 +1220,12 @@ pub type OptixQueryFunctionTable_t = ::std::option::Option< pub struct OptixBuiltinISOptions { pub builtinISModuleType: OptixPrimitiveType, pub usesMotionBlur: ::std::os::raw::c_int, + pub buildFlags: ::std::os::raw::c_uint, + pub curveEndcapFlags: ::std::os::raw::c_uint, } impl Default for OptixBuiltinISOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } extern "C" { @@ -1042,17 +1324,36 @@ extern "C" { ) -> OptixResult; } extern "C" { - pub fn optixModuleCreateFromPTX( + pub fn optixModuleCreate( context: OptixDeviceContext, moduleCompileOptions: *const OptixModuleCompileOptions, pipelineCompileOptions: *const OptixPipelineCompileOptions, - PTX: *const ::std::os::raw::c_char, - PTXsize: size_t, + input: *const ::std::os::raw::c_char, + inputSize: size_t, logString: *mut ::std::os::raw::c_char, logStringSize: *mut size_t, module: *mut OptixModule, ) -> OptixResult; } +extern "C" { + pub fn optixModuleCreateWithTasks( + context: OptixDeviceContext, + moduleCompileOptions: *const OptixModuleCompileOptions, + pipelineCompileOptions: *const OptixPipelineCompileOptions, + input: *const ::std::os::raw::c_char, + inputSize: size_t, + logString: *mut ::std::os::raw::c_char, + logStringSize: *mut size_t, + module: *mut OptixModule, + firstTask: *mut OptixTask, + ) -> OptixResult; +} +extern "C" { + pub fn optixModuleGetCompilationState( + module: OptixModule, + state: *mut OptixModuleCompileState, + ) -> OptixResult; +} extern "C" { pub fn optixModuleDestroy(module: OptixModule) -> OptixResult; } @@ -1065,10 +1366,19 @@ extern "C" { builtinModule: *mut OptixModule, ) -> OptixResult; } +extern "C" { + pub fn optixTaskExecute( + task: OptixTask, + additionalTasks: *mut OptixTask, + maxNumAdditionalTasks: ::std::os::raw::c_uint, + numAdditionalTasksCreated: *mut ::std::os::raw::c_uint, + ) -> OptixResult; +} extern "C" { pub fn optixProgramGroupGetStackSize( programGroup: OptixProgramGroup, stackSizes: *mut OptixStackSizes, + pipeline: OptixPipeline, ) -> OptixResult; } extern "C" { @@ -1132,13 +1442,13 @@ extern "C" { pub fn optixAccelGetRelocationInfo( context: OptixDeviceContext, handle: OptixTraversableHandle, - info: *mut OptixAccelRelocationInfo, + info: *mut OptixRelocationInfo, ) -> OptixResult; } extern "C" { - pub fn optixAccelCheckRelocationCompatibility( + pub fn optixCheckRelocationCompatibility( context: OptixDeviceContext, - info: *const OptixAccelRelocationInfo, + info: *const OptixRelocationInfo, compatible: *mut ::std::os::raw::c_int, ) -> OptixResult; } @@ -1146,9 +1456,9 @@ extern "C" { pub fn optixAccelRelocate( context: OptixDeviceContext, stream: CUstream, - info: *const OptixAccelRelocationInfo, - instanceTraversableHandles: CUdeviceptr, - numInstanceTraversableHandles: size_t, + info: *const OptixRelocationInfo, + relocateInputs: *const OptixRelocateInput, + numRelocateInputs: size_t, targetAccel: CUdeviceptr, targetAccelSizeInBytes: size_t, targetHandle: *mut OptixTraversableHandle, @@ -1164,6 +1474,14 @@ extern "C" { outputHandle: *mut OptixTraversableHandle, ) -> OptixResult; } +extern "C" { + pub fn optixAccelEmitProperty( + context: OptixDeviceContext, + stream: CUstream, + handle: OptixTraversableHandle, + emittedProperty: *const OptixAccelEmitDesc, + ) -> OptixResult; +} extern "C" { pub fn optixConvertPointerToTraversableHandle( onDevice: OptixDeviceContext, @@ -1172,6 +1490,52 @@ extern "C" { traversableHandle: *mut OptixTraversableHandle, ) -> OptixResult; } +extern "C" { + pub fn optixOpacityMicromapArrayComputeMemoryUsage( + context: OptixDeviceContext, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult; +} +extern "C" { + pub fn optixOpacityMicromapArrayBuild( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult; +} +extern "C" { + pub fn optixOpacityMicromapArrayGetRelocationInfo( + context: OptixDeviceContext, + opacityMicromapArray: CUdeviceptr, + info: *mut OptixRelocationInfo, + ) -> OptixResult; +} +extern "C" { + pub fn optixOpacityMicromapArrayRelocate( + context: OptixDeviceContext, + stream: CUstream, + info: *const OptixRelocationInfo, + targetOpacityMicromapArray: CUdeviceptr, + targetOpacityMicromapArraySizeInBytes: size_t, + ) -> OptixResult; +} +extern "C" { + pub fn optixDisplacementMicromapArrayComputeMemoryUsage( + context: OptixDeviceContext, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult; +} +extern "C" { + pub fn optixDisplacementMicromapArrayBuild( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult; +} extern "C" { pub fn optixDenoiserCreate( context: OptixDeviceContext, @@ -1320,16 +1684,35 @@ pub struct OptixFunctionTable { highWaterMark: *mut size_t, ) -> OptixResult, >, - pub optixModuleCreateFromPTX: ::std::option::Option< + pub optixModuleCreate: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + moduleCompileOptions: *const OptixModuleCompileOptions, + pipelineCompileOptions: *const OptixPipelineCompileOptions, + input: *const ::std::os::raw::c_char, + inputSize: size_t, + logString: *mut ::std::os::raw::c_char, + logStringSize: *mut size_t, + module: *mut OptixModule, + ) -> OptixResult, + >, + pub optixModuleCreateWithTasks: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, moduleCompileOptions: *const OptixModuleCompileOptions, pipelineCompileOptions: *const OptixPipelineCompileOptions, - PTX: *const ::std::os::raw::c_char, - PTXsize: size_t, + input: *const ::std::os::raw::c_char, + inputSize: size_t, logString: *mut ::std::os::raw::c_char, logStringSize: *mut size_t, module: *mut OptixModule, + firstTask: *mut OptixTask, + ) -> OptixResult, + >, + pub optixModuleGetCompilationState: ::std::option::Option< + unsafe extern "C" fn( + module: OptixModule, + state: *mut OptixModuleCompileState, ) -> OptixResult, >, pub optixModuleDestroy: @@ -1343,6 +1726,14 @@ pub struct OptixFunctionTable { builtinModule: *mut OptixModule, ) -> OptixResult, >, + pub optixTaskExecute: ::std::option::Option< + unsafe extern "C" fn( + task: OptixTask, + additionalTasks: *mut OptixTask, + maxNumAdditionalTasks: ::std::os::raw::c_uint, + numAdditionalTasksCreated: *mut ::std::os::raw::c_uint, + ) -> OptixResult, + >, pub optixProgramGroupCreate: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, @@ -1360,6 +1751,7 @@ pub struct OptixFunctionTable { unsafe extern "C" fn( programGroup: OptixProgramGroup, stackSizes: *mut OptixStackSizes, + pipeline: OptixPipeline, ) -> OptixResult, >, pub optixPipelineCreate: ::std::option::Option< @@ -1414,13 +1806,13 @@ pub struct OptixFunctionTable { unsafe extern "C" fn( context: OptixDeviceContext, handle: OptixTraversableHandle, - info: *mut OptixAccelRelocationInfo, + info: *mut OptixRelocationInfo, ) -> OptixResult, >, - pub optixAccelCheckRelocationCompatibility: ::std::option::Option< + pub optixCheckRelocationCompatibility: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, - info: *const OptixAccelRelocationInfo, + info: *const OptixRelocationInfo, compatible: *mut ::std::os::raw::c_int, ) -> OptixResult, >, @@ -1428,9 +1820,9 @@ pub struct OptixFunctionTable { unsafe extern "C" fn( context: OptixDeviceContext, stream: CUstream, - info: *const OptixAccelRelocationInfo, - instanceTraversableHandles: CUdeviceptr, - numInstanceTraversableHandles: size_t, + info: *const OptixRelocationInfo, + relocateInputs: *const OptixRelocateInput, + numRelocateInputs: size_t, targetAccel: CUdeviceptr, targetAccelSizeInBytes: size_t, targetHandle: *mut OptixTraversableHandle, @@ -1446,6 +1838,14 @@ pub struct OptixFunctionTable { outputHandle: *mut OptixTraversableHandle, ) -> OptixResult, >, + pub optixAccelEmitProperty: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + handle: OptixTraversableHandle, + emittedProperty: *const OptixAccelEmitDesc, + ) -> OptixResult, + >, pub optixConvertPointerToTraversableHandle: ::std::option::Option< unsafe extern "C" fn( onDevice: OptixDeviceContext, @@ -1454,6 +1854,52 @@ pub struct OptixFunctionTable { traversableHandle: *mut OptixTraversableHandle, ) -> OptixResult, >, + pub optixOpacityMicromapArrayComputeMemoryUsage: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult, + >, + pub optixOpacityMicromapArrayBuild: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult, + >, + pub optixOpacityMicromapArrayGetRelocationInfo: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + opacityMicromapArray: CUdeviceptr, + info: *mut OptixRelocationInfo, + ) -> OptixResult, + >, + pub optixOpacityMicromapArrayRelocate: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + info: *const OptixRelocationInfo, + targetOpacityMicromapArray: CUdeviceptr, + targetOpacityMicromapArraySizeInBytes: size_t, + ) -> OptixResult, + >, + pub optixDisplacementMicromapArrayComputeMemoryUsage: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult, + >, + pub optixDisplacementMicromapArrayBuild: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult, + >, pub optixSbtRecordPackHeader: ::std::option::Option< unsafe extern "C" fn( programGroup: OptixProgramGroup, @@ -1472,6 +1918,10 @@ pub struct OptixFunctionTable { depth: ::std::os::raw::c_uint, ) -> OptixResult, >, + pub optixPlaceholder001: + ::std::option::Option OptixResult>, + pub optixPlaceholder002: + ::std::option::Option OptixResult>, pub optixDenoiserCreate: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, @@ -1554,7 +2004,7 @@ pub const OptixInstanceByteAlignment: size_t = 16; pub const OptixAabbBufferByteAlignment: size_t = 8; pub const OptixGeometryTransformByteAlignment: size_t = 16; pub const OptixTransformByteAlignment: size_t = 64; -pub const OptixVersion: size_t = 70300; +pub const OptixVersion: size_t = 80100; pub const OptixBuildInputSize: size_t = 1032; pub const OptixShaderBindingTableSize: size_t = 64; #[repr(i32)] diff --git a/examples/cuda/cpu/path_tracer/Cargo.toml b/examples/cuda/cpu/path_tracer/Cargo.toml index 14c1987d..077b59c8 100644 --- a/examples/cuda/cpu/path_tracer/Cargo.toml +++ b/examples/cuda/cpu/path_tracer/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" vek = { version = "0.17.1", features = ["bytemuck", "mint"] } bytemuck = { version = "1.21", features = ["derive"] } cust = { version = "0.3", path = "../../../../crates/cust", features = ["impl_vek"] } -image = "0.25.5" +image = "0.23" path_tracer_gpu = { path = "../../gpu/path_tracer_gpu" } gpu_rand = { version = "0.1", path = "../../../../crates/gpu_rand" } optix = { version = "0.1", path = "../../../../crates/optix" } @@ -17,7 +17,7 @@ imgui = "0.8.0" imgui-glium-renderer = "0.8.0" imgui-winit-support = "0.8.0" rayon = "1.10" -sysinfo = "0.33.1" +sysinfo = "0.30" anyhow = "1.0.53" [build-dependencies] diff --git a/examples/optix/denoiser/Cargo.toml b/examples/optix/denoiser/Cargo.toml index 134beb20..47157b41 100644 --- a/examples/optix/denoiser/Cargo.toml +++ b/examples/optix/denoiser/Cargo.toml @@ -7,5 +7,5 @@ edition = "2021" optix = { version = "0.1", path = "../../../crates/optix" } structopt = "0.3" cust = { version = "0.3", path = "../../../crates/cust", features = ["impl_vek", "bytemuck"] } -image = "0.25.5" +image = "0.23" vek = { version = "0.17.1", features = ["bytemuck"] } diff --git a/rust-toolchain b/rust-toolchain index 4937196f..3d3bbe01 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -5,5 +5,5 @@ # to the user in the error, instead of "error: invalid channel name '[toolchain]'". [toolchain] -channel = "nightly-2025-01-23" +channel = "nightly-2023-04-15" components = ["rust-src", "rustc-dev", "llvm-tools-preview"] \ No newline at end of file From c2af6bc9bcc288e58d5d1d3798b7c6b7f685a293 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 8 Mar 2025 12:37:53 -0500 Subject: [PATCH 15/16] The method try_fill_bytes is no longer a member of RngCore, so it has been removed in all these places --- crates/gpu_rand/src/default.rs | 4 ++++ crates/gpu_rand/src/xoroshiro/splitmix64.rs | 1 + crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs | 1 + crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs | 1 + crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs | 1 + crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs | 1 + crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs | 1 + crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs | 1 + crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs | 1 + crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs | 1 + crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs | 1 + crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs | 1 + crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs | 1 + crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs | 1 + crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs | 1 + crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs | 1 + 16 files changed, 19 insertions(+) diff --git a/crates/gpu_rand/src/default.rs b/crates/gpu_rand/src/default.rs index 400ad59d..2bef5c3b 100644 --- a/crates/gpu_rand/src/default.rs +++ b/crates/gpu_rand/src/default.rs @@ -37,6 +37,10 @@ impl RngCore for DefaultRand { fn fill_bytes(&mut self, dest: &mut [u8]) { self.inner.fill_bytes(dest) } + + // fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> { + // self.inner.try_fill_bytes(dest) + // } } impl SeedableRng for DefaultRand { diff --git a/crates/gpu_rand/src/xoroshiro/splitmix64.rs b/crates/gpu_rand/src/xoroshiro/splitmix64.rs index 9338662f..e2748917 100644 --- a/crates/gpu_rand/src/xoroshiro/splitmix64.rs +++ b/crates/gpu_rand/src/xoroshiro/splitmix64.rs @@ -49,6 +49,7 @@ impl RngCore for SplitMix64 { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } impl SeedableRng for SplitMix64 { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs index 41a6079d..bf88602c 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs @@ -78,6 +78,7 @@ impl RngCore for Xoroshiro128Plus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } impl SeedableRng for Xoroshiro128Plus { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs index 6aaf5d5a..9ccb0e54 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs @@ -75,6 +75,7 @@ impl RngCore for Xoroshiro128PlusPlus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } impl SeedableRng for Xoroshiro128PlusPlus { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs index 3c69c8ba..27545153 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs @@ -75,6 +75,7 @@ impl RngCore for Xoroshiro128StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } impl SeedableRng for Xoroshiro128StarStar { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs index 135ab9a4..7de4881b 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs @@ -38,6 +38,7 @@ impl RngCore for Xoroshiro64Star { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } impl SeedableRng for Xoroshiro64Star { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs index 7b24ade7..f97e351d 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs @@ -37,6 +37,7 @@ impl RngCore for Xoroshiro64StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } impl SeedableRng for Xoroshiro64StarStar { diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs index 9aa0de25..5e406eee 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs @@ -84,6 +84,7 @@ impl RngCore for Xoshiro128Plus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs index 7bcaacbc..aa5b6f31 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs @@ -92,6 +92,7 @@ impl RngCore for Xoshiro128PlusPlus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs index fcf2a9e2..62c51db8 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs @@ -92,6 +92,7 @@ impl RngCore for Xoshiro128StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs index e33066b9..96576664 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs @@ -113,6 +113,7 @@ impl RngCore for Xoshiro256Plus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs index 42a3a1d5..2855e08c 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs @@ -112,6 +112,7 @@ impl RngCore for Xoshiro256PlusPlus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs index 86fa5fbb..b7904ac3 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs @@ -112,6 +112,7 @@ impl RngCore for Xoshiro256StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs index 68494019..beedbe39 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs @@ -123,6 +123,7 @@ impl RngCore for Xoshiro512Plus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs index 884514cf..d582593e 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs @@ -122,6 +122,7 @@ impl RngCore for Xoshiro512PlusPlus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs index 3a8b73e2..4edaa022 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs @@ -122,6 +122,7 @@ impl RngCore for Xoshiro512StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } + } #[cfg(test)] From be2e9cc0118dccb91b53368ed2586c936d2b4c33 Mon Sep 17 00:00:00 2001 From: Alex Eisenschmied <105024964+Schmiedium@users.noreply.github.com> Date: Sat, 8 Mar 2025 15:04:28 -0500 Subject: [PATCH 16/16] White space edits to match main --- crates/gpu_rand/src/default.rs | 4 ---- crates/gpu_rand/src/xoroshiro/splitmix64.rs | 1 - crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs | 1 - crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs | 1 - crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs | 1 - crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs | 1 - crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs | 1 - crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs | 1 - crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs | 1 - crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs | 1 - crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs | 1 - crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs | 1 - crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs | 1 - crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs | 1 - crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs | 1 - crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs | 1 - 16 files changed, 19 deletions(-) diff --git a/crates/gpu_rand/src/default.rs b/crates/gpu_rand/src/default.rs index 2bef5c3b..400ad59d 100644 --- a/crates/gpu_rand/src/default.rs +++ b/crates/gpu_rand/src/default.rs @@ -37,10 +37,6 @@ impl RngCore for DefaultRand { fn fill_bytes(&mut self, dest: &mut [u8]) { self.inner.fill_bytes(dest) } - - // fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> { - // self.inner.try_fill_bytes(dest) - // } } impl SeedableRng for DefaultRand { diff --git a/crates/gpu_rand/src/xoroshiro/splitmix64.rs b/crates/gpu_rand/src/xoroshiro/splitmix64.rs index e2748917..9338662f 100644 --- a/crates/gpu_rand/src/xoroshiro/splitmix64.rs +++ b/crates/gpu_rand/src/xoroshiro/splitmix64.rs @@ -49,7 +49,6 @@ impl RngCore for SplitMix64 { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } impl SeedableRng for SplitMix64 { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs index bf88602c..41a6079d 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro128plus.rs @@ -78,7 +78,6 @@ impl RngCore for Xoroshiro128Plus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } impl SeedableRng for Xoroshiro128Plus { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs index 9ccb0e54..6aaf5d5a 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro128plusplus.rs @@ -75,7 +75,6 @@ impl RngCore for Xoroshiro128PlusPlus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } impl SeedableRng for Xoroshiro128PlusPlus { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs index 27545153..3c69c8ba 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro128starstar.rs @@ -75,7 +75,6 @@ impl RngCore for Xoroshiro128StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } impl SeedableRng for Xoroshiro128StarStar { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs index 7de4881b..135ab9a4 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro64star.rs @@ -38,7 +38,6 @@ impl RngCore for Xoroshiro64Star { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } impl SeedableRng for Xoroshiro64Star { diff --git a/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs b/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs index f97e351d..7b24ade7 100644 --- a/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoroshiro64starstar.rs @@ -37,7 +37,6 @@ impl RngCore for Xoroshiro64StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } impl SeedableRng for Xoroshiro64StarStar { diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs index 5e406eee..9aa0de25 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128plus.rs @@ -84,7 +84,6 @@ impl RngCore for Xoshiro128Plus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs index aa5b6f31..7bcaacbc 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128plusplus.rs @@ -92,7 +92,6 @@ impl RngCore for Xoshiro128PlusPlus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs index 62c51db8..fcf2a9e2 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro128starstar.rs @@ -92,7 +92,6 @@ impl RngCore for Xoshiro128StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs index 96576664..e33066b9 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256plus.rs @@ -113,7 +113,6 @@ impl RngCore for Xoshiro256Plus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs index 2855e08c..42a3a1d5 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256plusplus.rs @@ -112,7 +112,6 @@ impl RngCore for Xoshiro256PlusPlus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs index b7904ac3..86fa5fbb 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro256starstar.rs @@ -112,7 +112,6 @@ impl RngCore for Xoshiro256StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs index beedbe39..68494019 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512plus.rs @@ -123,7 +123,6 @@ impl RngCore for Xoshiro512Plus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs index d582593e..884514cf 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512plusplus.rs @@ -122,7 +122,6 @@ impl RngCore for Xoshiro512PlusPlus { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } #[cfg(test)] diff --git a/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs b/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs index 4edaa022..3a8b73e2 100644 --- a/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs +++ b/crates/gpu_rand/src/xoroshiro/xoshiro512starstar.rs @@ -122,7 +122,6 @@ impl RngCore for Xoshiro512StarStar { fn fill_bytes(&mut self, dest: &mut [u8]) { fill_bytes_via_next(self, dest); } - } #[cfg(test)]