@@ -51,7 +51,9 @@ impl VulkanInstance {
5151 name : * const std:: os:: raw:: c_char ,
5252 ) -> PFN_vkVoidFunction {
5353 if let Some ( f) = self . native . getInstanceProcAddr {
54- ( f) ( self . native . instance , name)
54+ unsafe {
55+ ( f) ( self . native . instance , name)
56+ }
5557 } else {
5658 PFN_vkVoidFunction :: None
5759 }
@@ -238,22 +240,26 @@ macro_rules! impl_vulkan {
238240 func: VulkanInitCallback ,
239241 user_data: * mut :: std:: os:: raw:: c_void,
240242 ) {
241- self . interface( )
242- . InterceptInitialization
243- . expect( "InterceptInitialization" ) ( std:: mem:: transmute( func) , user_data) ;
243+ unsafe {
244+ self . interface( )
245+ . InterceptInitialization
246+ . expect( "InterceptInitialization" ) ( std:: mem:: transmute( func) , user_data) ;
247+ }
244248 }
245249
246250 pub unsafe fn intercept_vulkan_api(
247251 & self ,
248252 name: * const :: std:: os:: raw:: c_char,
249253 func: ash:: vk:: PFN_vkVoidFunction ,
250254 ) -> ash:: vk:: PFN_vkVoidFunction {
251- std:: mem:: transmute( self
252- . interface( )
253- . InterceptVulkanAPI
254- . expect( "InterceptVulkanAPI" ) (
255- name, std:: mem:: transmute( func)
256- ) )
255+ unsafe {
256+ std:: mem:: transmute( self
257+ . interface( )
258+ . InterceptVulkanAPI
259+ . expect( "InterceptVulkanAPI" ) (
260+ name, std:: mem:: transmute( func)
261+ ) )
262+ }
257263 }
258264
259265 pub fn configure_event( & self , event_id: i32 , plugin_event_config: & VulkanPluginEventConfig ) {
@@ -302,22 +308,24 @@ macro_rules! impl_vulkan {
302308 access_flags: ash:: vk:: AccessFlags ,
303309 access_mode: VulkanResourceAccessMode ,
304310 ) -> Option <VulkanImage > {
305- let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
306- if self . interface( ) . AccessTexture . expect( "AccessTexture" ) (
307- native_texture,
308- match sub_resource {
309- Some ( t) => std:: mem:: transmute( t) ,
310- None => std:: ptr:: null( ) ,
311- } ,
312- std:: mem:: transmute( layout) ,
313- std:: mem:: transmute( pipeline_stage_flags) ,
314- std:: mem:: transmute( access_flags) ,
315- access_mode as UnityVulkanResourceAccessMode ,
316- std:: mem:: transmute( & mut ret) ,
317- ) {
318- Some ( VulkanImage { native: ret } )
319- } else {
320- None
311+ unsafe {
312+ let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
313+ if self . interface( ) . AccessTexture . expect( "AccessTexture" ) (
314+ native_texture,
315+ match sub_resource {
316+ Some ( t) => std:: mem:: transmute( t) ,
317+ None => std:: ptr:: null( ) ,
318+ } ,
319+ std:: mem:: transmute( layout) ,
320+ std:: mem:: transmute( pipeline_stage_flags) ,
321+ std:: mem:: transmute( access_flags) ,
322+ access_mode as UnityVulkanResourceAccessMode ,
323+ std:: mem:: transmute( & mut ret) ,
324+ ) {
325+ Some ( VulkanImage { native: ret } )
326+ } else {
327+ None
328+ }
321329 }
322330 }
323331
@@ -330,25 +338,27 @@ macro_rules! impl_vulkan {
330338 access_flags: ash:: vk:: AccessFlags ,
331339 access_mode: VulkanResourceAccessMode ,
332340 ) -> Option <VulkanImage > {
333- let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
334- if self
335- . interface( )
336- . AccessRenderBufferTexture
337- . expect( "AccessRenderBufferTexture" ) (
338- native_render_buffer,
339- match sub_resource {
340- Some ( t) => std:: mem:: transmute( t) ,
341- None => std:: ptr:: null( ) ,
342- } ,
343- std:: mem:: transmute( layout) ,
344- std:: mem:: transmute( pipeline_stage_flags) ,
345- std:: mem:: transmute( access_flags) ,
346- access_mode as UnityVulkanResourceAccessMode ,
347- std:: mem:: transmute( & mut ret) ,
348- ) {
349- Some ( VulkanImage { native: ret } )
350- } else {
351- None
341+ unsafe {
342+ let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
343+ if self
344+ . interface( )
345+ . AccessRenderBufferTexture
346+ . expect( "AccessRenderBufferTexture" ) (
347+ native_render_buffer,
348+ match sub_resource {
349+ Some ( t) => std:: mem:: transmute( t) ,
350+ None => std:: ptr:: null( ) ,
351+ } ,
352+ std:: mem:: transmute( layout) ,
353+ std:: mem:: transmute( pipeline_stage_flags) ,
354+ std:: mem:: transmute( access_flags) ,
355+ access_mode as UnityVulkanResourceAccessMode ,
356+ std:: mem:: transmute( & mut ret) ,
357+ ) {
358+ Some ( VulkanImage { native: ret } )
359+ } else {
360+ None
361+ }
352362 }
353363 }
354364
@@ -361,25 +371,27 @@ macro_rules! impl_vulkan {
361371 access_flags: ash:: vk:: AccessFlags ,
362372 access_mode: VulkanResourceAccessMode ,
363373 ) -> Option <VulkanImage > {
364- let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
365- if self
366- . interface( )
367- . AccessRenderBufferResolveTexture
368- . expect( "AccessRenderBufferResolveTexture" ) (
369- native_render_buffer,
370- match sub_resource {
371- Some ( t) => std:: mem:: transmute( t) ,
372- None => std:: ptr:: null( ) ,
373- } ,
374- std:: mem:: transmute( layout) ,
375- std:: mem:: transmute( pipeline_stage_flags) ,
376- std:: mem:: transmute( access_flags) ,
377- access_mode as UnityVulkanResourceAccessMode ,
378- std:: mem:: transmute( & mut ret) ,
379- ) {
380- Some ( VulkanImage { native: ret } )
381- } else {
382- None
374+ unsafe {
375+ let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
376+ if self
377+ . interface( )
378+ . AccessRenderBufferResolveTexture
379+ . expect( "AccessRenderBufferResolveTexture" ) (
380+ native_render_buffer,
381+ match sub_resource {
382+ Some ( t) => std:: mem:: transmute( t) ,
383+ None => std:: ptr:: null( ) ,
384+ } ,
385+ std:: mem:: transmute( layout) ,
386+ std:: mem:: transmute( pipeline_stage_flags) ,
387+ std:: mem:: transmute( access_flags) ,
388+ access_mode as UnityVulkanResourceAccessMode ,
389+ std:: mem:: transmute( & mut ret) ,
390+ ) {
391+ Some ( VulkanImage { native: ret } )
392+ } else {
393+ None
394+ }
383395 }
384396 }
385397
@@ -390,17 +402,19 @@ macro_rules! impl_vulkan {
390402 access_flags: ash:: vk:: AccessFlags ,
391403 access_mode: VulkanResourceAccessMode ,
392404 ) -> Option <VulkanImage > {
393- let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
394- if self . interface( ) . AccessBuffer . expect( "AccessTexture" ) (
395- native_buffer,
396- std:: mem:: transmute( pipeline_stage_flags) ,
397- std:: mem:: transmute( access_flags) ,
398- access_mode as UnityVulkanResourceAccessMode ,
399- std:: mem:: transmute( & mut ret) ,
400- ) {
401- Some ( VulkanImage { native: ret } )
402- } else {
403- None
405+ unsafe {
406+ let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
407+ if self . interface( ) . AccessBuffer . expect( "AccessTexture" ) (
408+ native_buffer,
409+ std:: mem:: transmute( pipeline_stage_flags) ,
410+ std:: mem:: transmute( access_flags) ,
411+ access_mode as UnityVulkanResourceAccessMode ,
412+ std:: mem:: transmute( & mut ret) ,
413+ ) {
414+ Some ( VulkanImage { native: ret } )
415+ } else {
416+ None
417+ }
404418 }
405419 }
406420
@@ -427,7 +441,9 @@ macro_rules! impl_vulkan {
427441 user_data: * mut :: std:: os:: raw:: c_void,
428442 flush: bool ,
429443 ) {
430- self . interface( ) . AccessQueue . expect( "AccessQueue" ) ( callback, event_id, user_data, flush) ;
444+ unsafe {
445+ self . interface( ) . AccessQueue . expect( "AccessQueue" ) ( callback, event_id, user_data, flush) ;
446+ }
431447 }
432448
433449 pub fn configure_swapchain( & self , swapchain_config: & VulkanSwapchainConfiguration ) -> bool {
@@ -447,25 +463,27 @@ macro_rules! impl_vulkan {
447463 access_flags: ash:: vk:: AccessFlags ,
448464 access_mode: VulkanResourceAccessMode ,
449465 ) -> Option <VulkanImage > {
450- let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
451- if self
452- . interface( )
453- . AccessTextureByID
454- . expect( "AccessTextureByID" ) (
455- texture_id,
456- match sub_resource {
457- Some ( t) => std:: mem:: transmute( t) ,
458- None => std:: ptr:: null( ) ,
459- } ,
460- std:: mem:: transmute( layout) ,
461- std:: mem:: transmute( pipeline_stage_flags) ,
462- std:: mem:: transmute( access_flags) ,
463- access_mode as UnityVulkanResourceAccessMode ,
464- std:: mem:: transmute( & mut ret) ,
465- ) {
466- Some ( VulkanImage { native: ret } )
467- } else {
468- None
466+ unsafe {
467+ let mut ret = std:: mem:: zeroed:: <UnityVulkanImage >( ) ;
468+ if self
469+ . interface( )
470+ . AccessTextureByID
471+ . expect( "AccessTextureByID" ) (
472+ texture_id,
473+ match sub_resource {
474+ Some ( t) => std:: mem:: transmute( t) ,
475+ None => std:: ptr:: null( ) ,
476+ } ,
477+ std:: mem:: transmute( layout) ,
478+ std:: mem:: transmute( pipeline_stage_flags) ,
479+ std:: mem:: transmute( access_flags) ,
480+ access_mode as UnityVulkanResourceAccessMode ,
481+ std:: mem:: transmute( & mut ret) ,
482+ ) {
483+ Some ( VulkanImage { native: ret } )
484+ } else {
485+ None
486+ }
469487 }
470488 }
471489 }
@@ -492,13 +510,17 @@ macro_rules! impl_vulkan_v2 {
492510 func: VulkanInitCallback ,
493511 user_data: * mut :: std:: os:: raw:: c_void,
494512 priority: i32 ) -> bool {
495- self . interface( ) . AddInterceptInitialization . expect( "AddInterceptInitialization" ) ( std:: mem:: transmute( func) , user_data, priority)
513+ unsafe {
514+ self . interface( ) . AddInterceptInitialization . expect( "AddInterceptInitialization" ) ( std:: mem:: transmute( func) , user_data, priority)
515+ }
496516 }
497517
498518 pub unsafe fn remove_intercept_initialization(
499519 & self ,
500520 func: VulkanInitCallback ) -> bool {
501- self . interface( ) . RemoveInterceptInitialization . expect( "RemoveInterceptInitialization" ) ( std:: mem:: transmute( func) )
521+ unsafe {
522+ self . interface( ) . RemoveInterceptInitialization . expect( "RemoveInterceptInitialization" ) ( std:: mem:: transmute( func) )
523+ }
502524 }
503525 }
504526}
0 commit comments