Can't share or open `IOSurface` cross process
- Dominant language
- C#
- Stars
- 2.9k
- Forks
- 576
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 123
Description
### Steps to Reproduce
1. Try to use any function to share an `IOSurface` cross-process on macOS
### Expected Behavior
The functions to share and lookup `IOSurface` should be exported; e.g.
[IOSurfaceCreateMachPort](https://developer.apple.com/documentation/iosurface/1419486-iosurfacecreatemachport?language=objc)
[IOSurfaceCreateXPCObject](https://developer.apple.com/documentation/iosurface/1419429-iosurfacecreatexpcobject?language=objc)
[IOSurfaceLookupFromMachPort](https://developer.apple.com/documentation/iosurface/1419480-iosurfacelookupfrommachport?language=objc)
[IOSurfaceLookupFromXPCObject](https://developer.apple.com/documentation/iosurface/1419449-iosurfacelookupfromxpcobject?language=objc)
Ideally, I'd also expect to be able to call the deprecated function [IOSurfaceLookup](https://developer.apple.com/documentation/iosurface/1419361-iosurfacelookup?language=objc). I can manually use `IOSurfaceIsGlobal` and `IOSurfaceGetID`, but how do I call the lookup? P/invoking it with a return type of `IntPtr` isn't helpful when I need an `IOSurface` to pass to other functions.
### Actual Behavior
The functions are not available.
### Environment
Visual Studio Professional 2022 for Mac
Version 17.5.3 (build 15)
Installation UUID: 4693e2b8-e552-4d2a-9994-cef0d37548ad
Runtime
.NET 7.0.1 (64-bit)
Architecture: Arm64
Microsoft.macOS.Sdk 12.3.2372; git-rev-head:754abbf6a3563f6267e5717ae832b4ac25b1f2fb; git-branch:release/7.0.1xx-xcode13.3
Roslyn (Language Service)
4.5.0-3.23056.2+97881342e427ff5cdcba8f12b12ff8e6f3564431
NuGet
Version: 6.4.0.117
.NET SDK (Arm64)
SDK: /usr/local/share/dotnet/sdk/7.0.202/Sdks
SDK Versions:
7.0.202
7.0.200
7.0.102
7.0.101
7.0.100
6.0.407
6.0.406
6.0.405
6.0.404
6.0.403
6.0.402
6.0.401
6.0.302
6.0.300
6.0.101
MSBuild SDKs: /Applications/Visual Studio.app/Contents/MonoBundle/MSBuild/Current/bin/Sdks
.NET SDK (x64)
SDK Versions:
6.0.407
6.0.406
6.0.405
6.0.404
6.0.403
6.0.402
6.0.401
6.0.302
6.0.105
6.0.102
6.0.101
5.0.408
5.0.405
5.0.404
3.1.426
3.1.425
3.1.424
3.1.423
3.1.421
3.1.419
3.1.416
.NET Runtime (Arm64)
Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.0.15
6.0.14
6.0.13
6.0.12
6.0.11
6.0.10
6.0.9
6.0.7
6.0.5
6.0.1
.NET Runtime (x64)
Runtime: /usr/local/share/dotnet/x64/dotnet
Runtime Versions:
6.0.15
6.0.14
6.0.13
6.0.12
6.0.11
6.0.10
6.0.9
6.0.7
6.0.5
6.0.2
6.0.1
5.0.17
5.0.14
5.0.13
3.1.32
3.1.31
3.1.30
3.1.29
3.1.27
3.1.25
3.1.22
Xamarin.Profiler
Version: 1.8.0.49
Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler
Updater
Version: 11
Apple Developer Tools
Xcode: 14.2 21534
Build: 14C18
Xamarin.Mac
Version: 9.1.0.5 Visual Studio Professional
Hash: 7738c90c9
Branch: xcode14.2
Build date: 2023-01-25 15:56:14-0500
Xamarin.iOS
Version: 16.2.0.5 Visual Studio Professional
Hash: 7738c90c9
Branch: xcode14.2
Build date: 2023-01-25 15:56:15-0500
Xamarin Designer
Version: 17.5.3.47
Hash: e8b5d371c3
Branch: remotes/origin/d17-5
Build date: 2023-03-23 18:30:22 UTC
Xamarin.Android
Version: 13.2.0.0 (Visual Studio Professional)
Commit: xamarin-android/d17-5/797e2e1
Android SDK: /Users/rmarkiewicz/Library/Developer/Xamarin/android-sdk-macosx
Supported Android versions:
12.0 (API level 31)
11.0 (API level 30)
10.0 (API level 29)
9.0 (API level 28)
13.0 (API level 33)
SDK Command-line Tools Version: 7.0
SDK Platform Tools Version: 33.0.2
SDK Build Tools Version: 32.0.0
Build Information:
Mono: 6dd9def
Java.Interop: xamarin/java.interop/main@149d70fe
SQLite: xamarin/sqlite/3.40.0@fdc1e34
Xamarin.Android Tools: xamarin/xamarin-android-tools/main@9f02d77
Microsoft Build of OpenJDK
Java SDK: /Library/Java/JavaVirtualMachines/microsoft-11.jdk
11.0.16.1
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL
Eclipse Temurin JDK
Java SDK: /Library/Java/JavaVirtualMachines/temurin-8.jdk
1.8.0.302
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL
Android SDK Manager
Version: 17.5.0.33
Hash: f0c0c52
Branch: remotes/origin/d17-5~2
Build date: 2023-03-23 18:30:27 UTC
Android Device Manager
Version: 0.0.0.1245
Hash: 7f8a990
Branch: 7f8a990
Build date: 2023-03-23 18:30:27 UTC
Build Information
Release ID: 1705030015
Git revision: c7ec3826dd11045a53fa7f2c08ddbd6bd475c05b
Build date: 2023-03-23 18:28:33+00
Build branch: release-17.5
Build lane: release-17.5
Operating System
Mac OS X 13.4.0
Darwin 22.5.0 Darwin Kernel Version 22.5.0
Mon Apr 24 20:52:24 PDT 2023
root:xnu-8796.121.2~5/RELEASE_ARM64_T6000 arm64
Enabled user installed extensions
Project System Tools 0.12
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the existing IOSurface binding entry points and compare them with the four named functions: IOSurfaceCreateMachPort, IOSurfaceCreateXPCObject, IOSurfaceLookupFromMachPort, and IOSurfaceLookupFromXPCObject. Done means the sharing and lookup functions, including the requested deprecated IOSurfaceLookup if supported, are available for use from .NET.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, macos
- Domain
- api, desktop-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100