Skip to content

Commit

Permalink
Update Rust 2021
Browse files Browse the repository at this point in the history
  • Loading branch information
aosoft committed Aug 4, 2024
1 parent 2a2d5a5 commit ee6a257
Show file tree
Hide file tree
Showing 13 changed files with 235 additions and 157 deletions.
2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ members = [
"unity-native-plugin-sample",
"unity-native-plugin-sample-profiler",
]
resolver = "2"

2 changes: 1 addition & 1 deletion unity-native-plugin-sample-profiler/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "unity-native-plugin-sample-profiler"
version = "0.7.0"
authors = ["Yasuhiro Taniuchi"]
edition = "2018"
edition = "2021"
publish = false

[lib]
Expand Down
2 changes: 1 addition & 1 deletion unity-native-plugin-sample/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "unity-native-plugin-sample"
version = "0.7.0"
authors = ["Yasuhiro Taniuchi"]
edition = "2018"
edition = "2021"
publish = false

[lib]
Expand Down
2 changes: 1 addition & 1 deletion unity-native-plugin-sys/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "unity-native-plugin-sys"
version = "0.7.0"
authors = ["Yasuhiro Taniuchi"]
edition = "2018"
edition = "2021"
license = "MIT"
description = "unity-native-plugin-sys"
homepage = "https://github.com/aosoft/unity-native-plugin-rs"
Expand Down
2 changes: 1 addition & 1 deletion unity-native-plugin-tester/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "unity-native-plugin-tester"
version = "0.7.0"
authors = ["Yasuhiro Taniuchi"]
edition = "2018"
edition = "2021"
license = "MIT"
description = "Unity Native Plugin API Tester Library"
homepage = "https://github.com/aosoft/unity-native-plugin-rs"
Expand Down
18 changes: 11 additions & 7 deletions unity-native-plugin-tester/src/interface.rs
Original file line number Diff line number Diff line change
Expand Up @@ -114,16 +114,20 @@ extern "system" fn register_interface_split(
}

pub unsafe fn get_unity_interfaces() -> &'static mut TesterContextInterfaces {
UNITY_INTERFACES.as_mut().unwrap()
unsafe {
UNITY_INTERFACES.as_mut().unwrap()
}
}

pub unsafe fn get_unity_interface<T: UnityInterfaceBase + UnityInterfaceID>() -> &'static T {
get_unity_interfaces()
.get_interface(T::get_interface_guid())
.unwrap()
.as_any()
.downcast_ref::<T>()
.unwrap()
unsafe {
get_unity_interfaces()
.get_interface(T::get_interface_guid())
.unwrap()
.as_any()
.downcast_ref::<T>()
.unwrap()
}
}

pub fn initialize_unity_interfaces() {
Expand Down
2 changes: 1 addition & 1 deletion unity-native-plugin-vulkan/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ repository = "https://github.com/aosoft/unity-native-plugin-rs"
readme = "README.md"
categories = ["api-bindings", "game-engines"]
keywords = ["unity"]
edition = "2018"
edition = "2021"
include = [
"**/*.rs",
"Cargo.toml",
Expand Down
216 changes: 119 additions & 97 deletions unity-native-plugin-vulkan/src/vulkan.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ impl VulkanInstance {
name: *const std::os::raw::c_char,
) -> PFN_vkVoidFunction {
if let Some(f) = self.native.getInstanceProcAddr {
(f)(self.native.instance, name)
unsafe {
(f)(self.native.instance, name)
}
} else {
PFN_vkVoidFunction::None
}
Expand Down Expand Up @@ -238,22 +240,26 @@ macro_rules! impl_vulkan {
func: VulkanInitCallback,
user_data: *mut ::std::os::raw::c_void,
) {
self.interface()
.InterceptInitialization
.expect("InterceptInitialization")(std::mem::transmute(func), user_data);
unsafe {
self.interface()
.InterceptInitialization
.expect("InterceptInitialization")(std::mem::transmute(func), user_data);
}
}

pub unsafe fn intercept_vulkan_api(
&self,
name: *const ::std::os::raw::c_char,
func: ash::vk::PFN_vkVoidFunction,
) -> ash::vk::PFN_vkVoidFunction {
std::mem::transmute(self
.interface()
.InterceptVulkanAPI
.expect("InterceptVulkanAPI")(
name, std::mem::transmute(func)
))
unsafe {
std::mem::transmute(self
.interface()
.InterceptVulkanAPI
.expect("InterceptVulkanAPI")(
name, std::mem::transmute(func)
))
}
}

pub fn configure_event(&self, event_id: i32, plugin_event_config: &VulkanPluginEventConfig) {
Expand Down Expand Up @@ -302,22 +308,24 @@ macro_rules! impl_vulkan {
access_flags: ash::vk::AccessFlags,
access_mode: VulkanResourceAccessMode,
) -> Option<VulkanImage> {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self.interface().AccessTexture.expect("AccessTexture")(
native_texture,
match sub_resource {
Some(t) => std::mem::transmute(t),
None => std::ptr::null(),
},
std::mem::transmute(layout),
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
unsafe {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self.interface().AccessTexture.expect("AccessTexture")(
native_texture,
match sub_resource {
Some(t) => std::mem::transmute(t),
None => std::ptr::null(),
},
std::mem::transmute(layout),
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
}
}
}

Expand All @@ -330,25 +338,27 @@ macro_rules! impl_vulkan {
access_flags: ash::vk::AccessFlags,
access_mode: VulkanResourceAccessMode,
) -> Option<VulkanImage> {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self
.interface()
.AccessRenderBufferTexture
.expect("AccessRenderBufferTexture")(
native_render_buffer,
match sub_resource {
Some(t) => std::mem::transmute(t),
None => std::ptr::null(),
},
std::mem::transmute(layout),
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
unsafe {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self
.interface()
.AccessRenderBufferTexture
.expect("AccessRenderBufferTexture")(
native_render_buffer,
match sub_resource {
Some(t) => std::mem::transmute(t),
None => std::ptr::null(),
},
std::mem::transmute(layout),
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
}
}
}

Expand All @@ -361,25 +371,27 @@ macro_rules! impl_vulkan {
access_flags: ash::vk::AccessFlags,
access_mode: VulkanResourceAccessMode,
) -> Option<VulkanImage> {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self
.interface()
.AccessRenderBufferResolveTexture
.expect("AccessRenderBufferResolveTexture")(
native_render_buffer,
match sub_resource {
Some(t) => std::mem::transmute(t),
None => std::ptr::null(),
},
std::mem::transmute(layout),
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
unsafe {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self
.interface()
.AccessRenderBufferResolveTexture
.expect("AccessRenderBufferResolveTexture")(
native_render_buffer,
match sub_resource {
Some(t) => std::mem::transmute(t),
None => std::ptr::null(),
},
std::mem::transmute(layout),
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
}
}
}

Expand All @@ -390,17 +402,19 @@ macro_rules! impl_vulkan {
access_flags: ash::vk::AccessFlags,
access_mode: VulkanResourceAccessMode,
) -> Option<VulkanImage> {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self.interface().AccessBuffer.expect("AccessTexture")(
native_buffer,
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
unsafe {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self.interface().AccessBuffer.expect("AccessTexture")(
native_buffer,
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
}
}
}

Expand All @@ -427,7 +441,9 @@ macro_rules! impl_vulkan {
user_data: *mut ::std::os::raw::c_void,
flush: bool,
) {
self.interface().AccessQueue.expect("AccessQueue")(callback, event_id, user_data, flush);
unsafe {
self.interface().AccessQueue.expect("AccessQueue")(callback, event_id, user_data, flush);
}
}

pub fn configure_swapchain(&self, swapchain_config: &VulkanSwapchainConfiguration) -> bool {
Expand All @@ -447,25 +463,27 @@ macro_rules! impl_vulkan {
access_flags: ash::vk::AccessFlags,
access_mode: VulkanResourceAccessMode,
) -> Option<VulkanImage> {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self
.interface()
.AccessTextureByID
.expect("AccessTextureByID")(
texture_id,
match sub_resource {
Some(t) => std::mem::transmute(t),
None => std::ptr::null(),
},
std::mem::transmute(layout),
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
unsafe {
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
if self
.interface()
.AccessTextureByID
.expect("AccessTextureByID")(
texture_id,
match sub_resource {
Some(t) => std::mem::transmute(t),
None => std::ptr::null(),
},
std::mem::transmute(layout),
std::mem::transmute(pipeline_stage_flags),
std::mem::transmute(access_flags),
access_mode as UnityVulkanResourceAccessMode,
std::mem::transmute(&mut ret),
) {
Some(VulkanImage { native: ret })
} else {
None
}
}
}
}
Expand All @@ -492,13 +510,17 @@ macro_rules! impl_vulkan_v2 {
func: VulkanInitCallback,
user_data: *mut ::std::os::raw::c_void,
priority: i32) -> bool {
self.interface().AddInterceptInitialization.expect("AddInterceptInitialization")(std::mem::transmute(func), user_data, priority)
unsafe {
self.interface().AddInterceptInitialization.expect("AddInterceptInitialization")(std::mem::transmute(func), user_data, priority)
}
}

pub unsafe fn remove_intercept_initialization(
&self,
func: VulkanInitCallback) -> bool {
self.interface().RemoveInterceptInitialization.expect("RemoveInterceptInitialization")(std::mem::transmute(func))
unsafe {
self.interface().RemoveInterceptInitialization.expect("RemoveInterceptInitialization")(std::mem::transmute(func))
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion unity-native-plugin/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ repository = "https://github.com/aosoft/unity-native-plugin-rs"
readme = "../README.md"
categories = ["api-bindings", "game-engines"]
keywords = ["unity"]
edition = "2018"
edition = "2021"
include = [
"**/*.rs",
"Cargo.toml",
Expand Down
Loading

0 comments on commit ee6a257

Please sign in to comment.